На вход программе подается последовательность символов, заканчивающаяся точкой. Требуется написать программу, которая определяет, есть ли в этой последовательности десятичные цифры, и выводит наибольшее число, которое можно составить из этих цифр. Ведущих нулей в числе быть не должно (за исключением числа 0, запись которого содержит ровно одну цифру). Если цифр нет, программа должна вывести на экран слово «Нет», если есть –слово «Да» и в следующей строчке искомое число. Например, если исходная последовательность была такая:
Day 10? mice 8: “Year” 7 is a mistake 91.
то результат должен быть следующий:
Да
987110
Решение:
program n1;
uses crt;
var i,j,f:integer;
s:string;
a:array [0..9] of integer;
begin
f:=0;
readln (s);
i:=1;
while (s[i]<>'.') do begin
for j:=0 to 9 do
if s[i]= inttostr(j) then begin a[j]:=a[j]+1;
f:=1;
end;
i:=i+1;
end;
if f=0 then writeln ('Чисел нет')
else begin
writeln ('Да');
for i:=9 downto 0 do
for j:=1 to (a[i]) do write (i);
end;
end.
|