Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2014, 14:27   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

с массивом и сортировкой решение простое, но не очень эффективное.

вот решение без использования массива:
Код:
var max:array[1..3] of integer;
  a : integer;
  i,j,k : integer;
begin
 i:=1;
 readln(a);
 while a<>0 do begin
  if i=1 then begin
        max[1] := a;
        inc(i);
  end
  else
    if i=2 then begin
      if max[1]<>a then begin
        if a<max[1] then max[2] := 2
        else begin max[2] := max[1]; max[1] := a end;
        inc(i)
      end;
    end
    else
      if i=3 then begin
        if (a<>max[1]) and (a<>max[2]) then begin
          j:=1;
          while (j<3) and (a<max[j]) do Inc(j);
          for k:=3 downto j+1 do max[k] := max[k-1];
          max[j] := a;
          inc(i);
        end;
      end
      else {массив из 3-х уже полностью заполнен}
         if (a<>max[1]) and (a<>max[2]) and (a<>max[3]) then begin
           j:=1;
           while (j<=3) and (a<max[j]) do Inc(j);
           if j<4 then begin
             for k:=3 downto j+1 do max[k] := max[k-1];
             max[j] := a;
           end;
           { Write('new massive: '); for k:=1 to 3 do write(max[k]:2,' ');  - это для отладки!}
         end;
   ReadLn(a);
 end;
 write(max[1]:5,max[2]:5,max[3]:5);
 readln;
end.

Последний раз редактировалось Serge_Bliznykov; 01.01.2014 в 14:35.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.01.2014, 15:24   #12
ANTON255200
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 15
Сообщение

разобрался вроде.
К примеру, члены последовательности по модулю не превосходят 1000000000 (10 в девятой степени).
Код:
var max1,max2,max3,a: longint;
begin
max3:=-1000000003;
max2:=-1000000002;
max1:=-1000000001;
read(A);
WHILE a<>0 do begin
if a>max1 then begin max3:=max2; max2:=max1; max1:=a;  end; //второй становится третьим, а первый - вторым
if (a>max2) and (a<max1) then begin max3:=max2; max2:=a; end; //второй становится третьим, первый не меняется
if (a>max3) and (a<max2) then max3:=a;
read(a);
end;
writeln(max1);
writeln(max2);
writeln(max3);
end.

Последний раз редактировалось ANTON255200; 01.01.2014 в 15:31.
ANTON255200 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
даны три матрицы,найти наибольшее значение элемента! Елешечка Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2013 08:55
найти два максимальных элемента в массиве Sylar9 Общие вопросы C/C++ 5 27.05.2012 14:18
Две лабы: файл - обработать слова; массив - найти три наибольших элемента за один проход ( Delphi ) Emma_Imp Помощь студентам 5 26.12.2010 21:13
найти наименьший номер элемента последовательности, для которого выполняется условие newgener Помощь студентам 3 24.05.2010 18:44
Паскаль-Найти сумму максимальных элементов строк матрицы tanyhaftv Помощь студентам 9 24.03.2010 16:03