** вход программе подаётся последовательность символов, заканчивающаяся точкой. Требуется...

0 голосов
160 просмотров

На вход программе подаётся последовательность символов, заканчивающаяся точкой. Требуется написать программу, которая определяет, есть ли в этой последовательности цифры, и выводит НАИБОЛЬШЕЕ число, которое можно составить из этих цифр. Ведущих нулей быть не должно, за исключением одного нуля. Если числа нет, выводится сообщение 'no', если число есть - 'да' и в следующей строке искомое число.
Например, если исходная последовательность была такая: Day 10, mice 8: "Year" 7 is a mistake 91.
То результат должен быть следующий:
Да
987110


Информатика (543 баллов) | 160 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Var
   A:array['0'..'9'] of longint;
   C:char;
   i:integer;
Begin
For C:= '0' to '9' do A[C]:=0;
Repeat
Read(C);
if C in['0'..'9'] then A[C]:=A[C]+1;
Until C = '.';
if (A['1']=0)and(A['2']=0)and(A['3']=0)and(A['4']=0)and(A['5']=0)and(A['6']=0)and(A['7']=0)and(A['8']=0)and(A['9']=0) then
   if A['0']=0 then Write('no')
   else
      Begin
      WriteLn('Да');
      WriteLn(0);
      End
else
   Begin
   WriteLn('Да');
   For C:='9' downto '0' do
       For i:= 1 to A[C] do
           Write(C)
   End
End.

(34.0k баллов)
0 голосов

Begin
  var s := readstring();
   if(s.Any(x -> x.isDigit)) then
   begin
  if(s.Any(x->x in['1'..'9'])) then
  s.Where(x -> x.IsDigit).OrderByDescending(x -> x).Println
  else
  write(0);
  end
  else
writeln('No');
 end.

(3.7k баллов)
0

"Ведущих нулей быть не должно, за исключением одного нуля."

0

begin
var s := readstring();
if(s.Any(x -> x.isDigit)) then
begin
writeln('Да');
if(s.Any(x -> (x = '1') or (x = '2') or (x = '3') or (x = '4') or (x = '5') or (x = '6') or (x = '7') or (x = '8') or (x = '9'))) then
s.Where(x -> x.IsDigit).OrderByDescending(x -> x).Println
else write(0);
end
else writeln('No');
end.

0

x in ['1'..'9']...

0

И не сюда, а ответ исправьте

0

Я пытался. Пишет слишком поздно исправлять ответ ...