• Решить задачу на Паскале, используя циклы.
    Вводится последовательность целых чисел, не превосходящих
    по модулю 10^9, и при этом не равных нулю. Ноль – признак конца. Вы-
    дайте три максимальных числа этой последовательности, не игнорируя
    дубликаты (то есть, три числа в ответе могут совпадать). Гарантирует-
    ся, что в последовательности есть как минимум три содержательных
    элемента.

Ответы 2

  • Можно короче записать                               var n,k,mx,mx1,mx2: integer;begin  write('число 1:  ');  readln(n);   mx:=-99999999;  mx1:=mx;  mx2:=mx;  k:=1;  while n<>0 do  begin    if ((n>mx2) and (n<mx1)) then mx2:=n    else if n>=mx1 then mx2:=mx1;    if ((n>mx1) and (n<mx)) then mx1:=n    else if n>=mx then mx1:=mx;    if n>=mx then mx:=n;    k:=k+1;    write('число ',k,':  ');  readln(n);   end;  write('максимальные числа:  ',mx,' ',mx1,' ',mx2);end.
  • //Знаю, что это решение далеко от понятия "изящество"//Pascal ABC.NET v3.0 сборка 1111var max1,max2,max3,i,maxi1,maxi2:integer; ar:array of integer;beginmax1:=-2147483648;max2:=-2147483648;max3:=-2147483648;setlength(ar,1);readln(ar[0]);i:=0; repeat  inc(i);  setlength(ar,i+1);  readln(ar[i]); until ar[i]=0; for i:=0 to i do if ar[i]>max1 then  begin;   max1:=ar[i];   maxi1:=i;  end; for i:=0 to i do if (ar[i]>max2) and (i<>maxi1) then  begin;   max2:=ar[i];   maxi2:=i;  end; for i:=0 to i do if (ar[i]>max3) and (i<>maxi1) and (i<>maxi2) then max3:=ar[i];write('Max1=',max1,' Max2=',max2,' Max3=', max3);end.
    • Автор:

      prancer
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years