Другие языки программирования и технологии

Pascal - Вывести три наибольших числа

Необходимо без использования массивов из n-го количества вывести три наибольших. Язык - Pascal.
Это как? Где ж они тогда хранятся? Или с экрана вводятся по одному?

Если последнее, то алгоритм такой: заводите 3 переменные max1, max2 и max2. Изначально приравниваете их нулю (или минимально возможному числу, если допускаются отрицательные числа) . Дальше каждое новое число сравниваете сначала с max1. Если оно больше max1, смещаете все максимумы вниз: max3:=max2; max2:=max1; и заменяете max1 на новое число. Соответственно, если оно меньше max1, но больше max2, заменяете max3 на max2 и присваиваете max2 новое значение, ну и, наконец, если число меньше max1 и max2, но больше max3, то просто заменяете max3 на новое. И так в цикле от одного до n. Потом просто выводите max1, max2 и max3.

Программу сами, надеюсь, напишете?
Денис Савельев
Денис Савельев
76 386
Лучший ответ
Виталий Дидковский Да. Вводятся с экрана. Не обязательно по одному.
var N, N1, N2, N3 : Integer;
begin
Write('Признак окончания ввода чисел: 0');
N1 := Low(Integer); N2 := N1; N3 := N2;
repeat
Write('N = '); ReadLn(N);
if N > N1 then begin N3 := N2; N2 := N1; N1 := N; end
else if N > N2 then begin N3 := N2; N2 := N; end
else if N > N3 then N3 := N;
until N = 0;
WriteLn('Наибольшие числа: ');
if N1 > Low(Integer) then WriteLn(N1);
if N2 > Low(Integer) then WriteLn(N2);
if N3 > Low(Integer) then WriteLn(N3);
end.
ИГ
Иван Глебов
60 811
яб писал в функции которая оправляет массив в самого себя пока не найдем элемент (тогда нам не страшны многоуровневые массивы) а в остальном уже другии описали

Похожие вопросы