Найти среднее число из трех в Pascal
Среди трех чисел найти среднее. Если среди чисел есть равные, вывести сообщение "Ошибка".
Пример работы программы
Введите три числа: 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.
Хотя задача кажется простой, ее решение не такое очевидное. Можно, например, проверить каждое число, лежит ли оно между двумя другими. Или найти минимальное из трех, после чего вывести минимальное из оставшихся двух. В примере выбран первый способ.
- Исключаем равенство чисел. Если первое число равно второму или первое равно третьему или второе равно третьему или все три числа равны (первое равно второму и второе равно третьему), то вывести сообщение "Ошибка". Иначе переходим к п. 2.
- Проверяем лежит ли первое число между вторым и третьим. Если первое число больше второго, но меньше третьего (т.е. второе минимально), или первое число меньше второго, но больше третьего (т.е. третье минимально), то значит оно среднее. Иначе переходим к п. 3.
- Проверяем лежит ли второе число между первым и третьим. Если второе число больше первого, но меньше третьего, или меньше первого, но больше третьего, то оно среднее. Иначе переходим к п. 4.
- Среднее число третье, так как ни один другой вариант не подошел. Действительно, числа не равны друг другу, первое и второе числа средними не являются.