© Иванов Дмитрий, МБОУ « Лицей № 2 », г. Нижневартовск
Задача № 5
На вход программе подается последовательность символов, заканчивающаяся точкой. Требуется написать программу, которая определяет, есть ли в этой последовательности десятичные цифры, и выводит наибольшее число, которое можно составить из этих цифр. Ведущих нулей в числе быть не должно( за исключением числа 0, запись которого содержит ровно одну цифру). Если цифр нет, программа должна вывести на экран слово « Нет », а если есть – слово « Да » и в следующей строчке искомое число. Например, если исходная последовательность была такая: Day 10, mice 8: " Year " 7 is a mistake 91. то результат должен быть следующий: Да 987110
Решение: program zifri; var a: array [ 0.. 9 ] of integer; s: string; i, x, ch, k: longint; er: integer; begin for i:= 0 to 9 do a [ i ]:= 0; readln( s); i:= 1; ch:= 0; while s [ i ]<>'.' do begin Val( s [ i ], x, er); if er = 0 then begin writeln( x); a [ x ]:= a [ x ]+ 1; end; i:= i + 1; end; k:= 1; for i:= 1 to 9 do if a [ i ]> 0 then while a [ i ]<> 0 do begin ch:= k * i + ch; k:= k * 10; writeln( k); a [ i ]:= a [ i ]-1; end; if a [ 0 ]> 0 then while a [ 0 ]<> 0 do begin ch:= ch * 10; a [ 0 ]:= a [ 0 ]-1; end; writeln( ch); end. май, 2015 г.