Помощь - Поиск - Пользователи - Календарь
Полная версия: Три максимальных числа последовательности > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Sirius159
Задача заключалась в том, чтобы вывести на черный экран три максимальных числа (игнорируя дубликаты) последовательности чисел, не превосходящих по модулю 10^9.
Вот мой код:

program qwe1;
uses crt;
label 1;
var i,n,f,v,max:longint;
a: array [1..10] of longint;
Begin
clrscr;
writeln('Vvedite kol-vo cisel: ');
readln(n);
1: writeln('Vvodimie cisla ne doljni previshati 10^9');
for i:=1 to n do begin
write(i,'-ii element: ');
readln(a[i]); end;
for i:=1 to n do
if abs(a[i])>1000000000 then goto 1;
max:=a[i];
for i:=1 to n do
if a[i]>max then max:=a[i];
for i:=1 to n do begin
if (a[i]<max) and (a[i]>a[i+1]) and (a[i]>a[i-1]) then v:=a[i]; end;
for i:=1 to n do begin
if (a[i]<v) and (a[i]>a[i+1]) and (a[i]>a[i-1]) then f:=a[i]; end;
writeln(f,' ',v,' ',max);
readln;
End.

Но он не работает.
В чем ошибка? И как правильнее составить алгоритм?
граф Монте-Кристо
Если честно, не оченб разобрался в Вашем коде, равно как и в алгоритме.
Мне последовательность действий представляется такой: заводите массив из трёх элементов и добавляете туда первые три элемента входного массива.
Далее в цикле каждый элемент входного массива сравниваете с элементами массива из трёх элементов. Если он больше хотя бы одного из трёх - удаляете наименьший из трёх и на его место ставите этот элемент, если нет, то двигаетесь дальше.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.