Найти среднее число из трех | Язык Паскаль

Найти среднее число из трех

Среди трех чисел найти среднее. Если среди чисел есть равные, вывести сообщение "Ошибка".

Пример работы программы

Введите три числа: 7 4 6
6

Решение задачи на языке Паскаль

var
    a1, a2, a3: integer;
 
begin
    write ('Введите три числа: ');
    readln (a1, a2, a3);
 
    if (a1 = a2) or (a1 = a3) or (a2 = a3) or ((a1 = a2) and (a2 = a3)) then
        writeln('Ошибка')
    else
        if ((a1 > a2) and (a1 < a3)) or ((a1 < a2) and (a1 > a3)) then
            writeln(a1)
        else
            if ((a2 > a1) and (a2 < a3)) or ((a2 < a1) and (a2 > a3)) then
                writeln(a2)
            else
                writeln(a3);
 
end.

Хотя задача кажется простой, ее решение не такое очевидное. Можно, например, проверить каждое число, лежит ли оно между двумя другими. Или найти минимальное из трех, после чего вывести минимальное из оставшихся двух. Ниже выбран первый способ.

  1. Исключаем равенство чисел. Если первое число равно второму или первое равно третьему или второе равно третьему или все три числа равны (первое равно второму и второе равно третьему), то вывести сообщение "Ошибка". Иначе переходим к п. 2.
  2. Проверяем лежит ли первое число между вторым и третьим. Если первое число больше второго, но меньше третьего (т.е. второе минимально), или первое число меньше второго, но больше третьего (т.е. третье минимально), то значит оно среднее. Иначе переходим к п. 3.
  3. Проверяем лежит ли второе число между первым и третьим. Если второе число больше первого, но меньше третьего, или меньше первого, но больше третьего, то оно среднее. Иначе переходим к п. 4.
  4. Среднее число третье, так как ни один другой вариант не подошел. Действительно, числа не равны друг другу, первое и второе числа средними не являются.