Не используя массив, определить значение второго по величине элемента - 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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • i - счётчик
    • n - количество чисел
    • temp - текущее число, которое будет сравниваться с максимумами
    • fMax - переменная для хранения первого по величине числа
    • sMax - переменная для хранения второго по величине числа
  2. Цикл для ввода значения n:
    • Запрос пользователю ввести значение n (>1)
    • Считывание значения n
    • Повторять до тех пор, пока n не будет больше 1
  3. Ввод первого числа:
    • Запрос пользователю ввести число
    • Считывание значения и сохранение в переменную fMax
  4. Ввод второго числа:
    • Запрос пользователю ввести число
    • Считывание значения и сохранение в переменную temp
  5. Сравнение введенных значений:
    • Если temp больше чем fMax, то:
      • sMax присваивается значение fMax
      • fMax присваивается значение temp
    • В противном случае:
      • sMax присваивается значение temp
  6. Цикл для ввода оставшихся чисел:
    • Для каждого числа от 3 до n:
      • Запрос пользователю ввести число
      • Считывание значения и сохранение в переменную temp
      • Сравнение temp с fMax и sMax:
      • Если temp больше чем fMax, то:
        • sMax присваивается значение fMax
        • fMax присваивается значение temp
      • В противном случае, если temp больше чем sMax:
        • sMax присваивается значение temp
  7. Вывод второго по величине числа:
    • Вывод на экран значения sMax с точностью до 4 знаков после запятой. Код предназначен для ввода последовательности чисел и определения значения второго по величине элемента этой последовательности.

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы