Не используя массив, определить значение второго по величине элемента - Pascal
Формулировка задачи:
Помогите с комментариями в программе-С клавиатуры вводятся N. Не используя массив, определить значение второго по величине элемента.
var
max,N,a,t,i,x: integer;
begin
writeln ('Введите N: ');
readln (N);
writeln ('Введите число: ');
readln (a); //максимальное
writeln ('Введите число: ');
readln (max); //второй по величине
if a<max then
begin
t:=max;
max:=a;
a:=t;
end;
for i:=3 to N do
begin
writeln ('Введите число: ');
readln (x);
if x>=a then
begin
max:=a;
a:=x;
end;
if x>max then
max:=x;
end;
writeln(max);
end.Решение задачи: «Не используя массив, определить значение второго по величине элемента»
textual
Листинг программы
var
i, n: LongWord; //счётчик и количество чисел
temp, fMax, sMax: Real; //текущая переменная, первый по величине, второй по величине
begin
repeat //считываем n
Write('Введите N (>1): ');
ReadLn(n);
until (n > 1); //пока он не будет удовлетворять логическим условиям задачи
Write('Введите число: '); ReadLn(fMax); //считываем число (оно единственное - поэтому и максимум)
Write('Введите число: '); ReadLn(temp); //считываем второе число
if (temp > fMax)
then //если второе больше первого
begin
sMax := fMax; //первое запоминается как второе по величине
fMax := temp; //второе - как первое
end
else //если первое было больше второго
sMax := temp; //второе - запоминается как второе же по величине
for i := 3 to n do //считываем остальные n-2 чисел
begin
Write('Введите число: '); ReadLn(temp); //запрашиваем число
if (temp > fMax)
then //если введённое больше первого максимума
begin
sMax := fMax; //переносим "старый" максимум во "второй по величине"
fMax := temp; //запоминаем новый максимум
end
else //если введённое меньше первого максимума
if (temp > sMax)
then //и введённое больше второго по величине
sMax := temp; //запоминаем новый "второй по величине"
end;
Write('Второй максимум: ', sMax:0:4);
end.
Объяснение кода листинга программы
- Объявление переменных:
i- счётчикn- количество чиселtemp- текущее число, которое будет сравниваться с максимумамиfMax- переменная для хранения первого по величине числаsMax- переменная для хранения второго по величине числа
- Цикл для ввода значения
n:- Запрос пользователю ввести значение
n(>1) - Считывание значения
n - Повторять до тех пор, пока
nне будет больше 1
- Запрос пользователю ввести значение
- Ввод первого числа:
- Запрос пользователю ввести число
- Считывание значения и сохранение в переменную
fMax
- Ввод второго числа:
- Запрос пользователю ввести число
- Считывание значения и сохранение в переменную
temp
- Сравнение введенных значений:
- Если
tempбольше чемfMax, то:sMaxприсваивается значениеfMaxfMaxприсваивается значениеtemp
- В противном случае:
sMaxприсваивается значениеtemp
- Если
- Цикл для ввода оставшихся чисел:
- Для каждого числа от 3 до
n:- Запрос пользователю ввести число
- Считывание значения и сохранение в переменную
temp - Сравнение
tempсfMaxиsMax: - Если
tempбольше чемfMax, то:sMaxприсваивается значениеfMaxfMaxприсваивается значениеtemp
- В противном случае, если
tempбольше чемsMax:sMaxприсваивается значениеtemp
- Для каждого числа от 3 до
- Вывод второго по величине числа:
- Вывод на экран значения
sMaxс точностью до 4 знаков после запятой. Код предназначен для ввода последовательности чисел и определения значения второго по величине элемента этой последовательности.
- Вывод на экран значения