21.05.2008, 19:54
общий
это ответ
<i>Здравствуйте, <b>Артемий Тотктонада</b>!</i>
Пример см. в приложении.
В примере реализован вывод всех четырех-значных чисел с тремя одинаковыми цифрами, но в неотсортированном виде. Если требуется также выводить и числа с четырьмя одинаковыми цифрами (где есть четыре одинаковых цифры, там всегда есть и три), то нужно просто удалить или закомментировать строчку "<code><b>if</b> (j <> i) <b>then</b></code>".
<em>Удачи!</em>
Приложение:
program q137701;uses Crt;var i, j, n: Integer; outStr: array[1..4] of Char;begin {Очистка экрана} ClrScr; {Выводим первое четырех-значное число} write (‘1000‘); {Выводим остальные числа} for i:= 1 to 9 do begin for j:= 0 to 9 do {Числа с четырьмя одинаковыми цифрами не выводим} if (j <> i) then begin for n:= 4 downto 1 do begin {Сумма j+n может равняться 1 только при j = 0 и n = 1} {Если число трех-значное (первая цифра ноль), то его не выводим} if (j + n = 1) then continue; {Заполняем выводимую строку одинаковыми цифрами} fillChar(outStr, 4, Char(Ord(‘0‘) + i)); {Заменяем единственную отличающуюся цифру} outStr[n]:= Char(Ord(‘0‘) + j); {Выводим число} write (‘, ‘, outStr); end; end; end; {Даем пользователю возможность насладиться результатом} writeln; write(‘Press any key...‘); readln;end.