![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Женя |
![]()
Сообщение
#1
|
Гость ![]() |
Обычная прога: Получить все шестизначные счастливые номера. (Про целое число n, удовлетворяющее условию 0<=n<=999999, говорят, что оно представляет собой счастливый номер, если сумма трёх его первых цифр равна сумме трёх его последних цифр; если в числе меньше шести цифр, то недостающие начальные цифры, считаются нулями).
прога: Код program luckynumber; uses crt; var a,b,c,d,e,f:byte; y:longint; x1:integer; luck:real; key:char; begin clrscr; for a:=0 to 9 do for b:=0 to 9 do for c:=0 to 9 do begin x1:=a+b+c; for d:=0 to 9 do for e:=0 to 9 do for f:=0 to 9 do if (x1=d+e+f) then begin y:=y+1; writeln ('Счастливый номер: ',a,b,c,d,e,f); If (y mod 10)=0 then begin writeln('Press Any Key for continue or Esc for exit...'); key:=readkey; if ord(key)=27 then exit; clrscr; end; end; end; readln end. Я что-то застрял с циклами.. как бы их так организовать на блок-схемах, чтобы всё работало? Пожлауйста, помогите! Заранее благодарен! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Женя
Цитата Обычная прога: Получить все шестизначные счастливые номера. Все так, но это программа делается по-другому: у твоего варианта перебор 1.000.000 значений, а можно сделать гораздо меньше... |
mithquessir |
![]()
Сообщение
#3
|
Гость ![]() |
volvo
Согласен. imho так можно сократить перебор где-то в 10-15 раз. :yes: Код var a,b,c,d,e,x1,x2,x3:integer; begin for a := 0 to 9 do for b := 0 to 9 do begin x1 := a + b; for c := 0 to 9 do begin x2 := x1 + c; for d := 0 to 9 do begin x3 := x2 - d; if x3 > 0 then for e := 0 to 9 do case x3 - e of 0..9:WriteLn(a,b,c,d,e,x3-e); end; end; end; end; end. Сообщение отредактировано: mithquessir - 23.12.2004 19:58 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
mithquessir
А вот так - до перебора "всего" порядка 27000 значений... Код const total = 999; count = 27; var arrCount: array[0 .. count] of integer; numbers: array[0 .. count, 1 .. total + 1] of integer; i, j, k, T: integer; s, counter: longint; n1, n2: integer; a, b, c, d, e, f: integer; begin counter := 0; for i := 0 to count do begin for j := 0 to total do begin T := j; s := 0; while T > 0 do begin s := s + T mod 10; T := t div 10 end; if s = i then begin inc(arrCount[i]); numbers[i, arrCount[i]] := j end; end; for j := 1 to arrCount[i] do begin n1 := numbers[i, j]; a := n1 div 100; b := (n1 - 100*a) div 10; c := n1 mod 10; for k := 1 to arrCount[i] do begin n2 := numbers[i, k]; d := n2 div 100; e := (n2 - 100*d) div 10; c := n2 mod 10; writeln(a, b, c, ' ', d, e, f); inc(counter); end; end; end; writeln('total numbers: ', counter) end. Сообщение отредактировано: volvo - 23.12.2004 20:34 |
Digitalator |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата А вот так - до перебора "всего" порядка 27000 значений... Хотя можно ввобще без перебора ![]() -------------------- |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Digitalator
Без перебора напечатать счастливые номера - занятие не для слабонервных, и тем более не для начинающих ;) |
Женя |
![]()
Сообщение
#7
|
Гость ![]() |
Помогите сделать пожалуйста блок-схему алгоритма на моём примере решения программы..
![]() мне главное надо - как связать все циклы.. Помогите! |
![]() ![]() |
![]() |
Текстовая версия | 25.06.2025 2:18 |