Проще всего задача поиска максимального из трех, четырех и более чисел, решается перегрузкой функции нахождения максимума из двух.
Аналогичные функции можно написать для поиска минимального из чисел. Для этого достаточно сменить знак сравнения в функции с двумя аргументами(в первой из рассмотренных).
Для реализации сначала нужно написать функцию, которая находит максимальное из двух чисел.
Функция определения максимального из двух чисел
function Max(x1, x2 : integer) : integer;
begin
if x1 > x2 then
Max := x1
else
Max := x2;
end;
Теперь у нас есть код, который возвращает наибольшее из двух чисел. Для того, чтобы расширить количество аргументов до трех, достаточно написать ещё одну функцию, которая будет дважды вызывать предыдущую.
Функция поиска наибольшего из трех чисел
function Max(x1, x2, x3 : integer) : integer;
begin
Max := Max(Max(x1, x2), x3);
end;
А что если нужно сравнить четыре, пять и больше чисел, и найти максимальное из них?
Без проблем, мы можем писать столько перегруженных функций, сколько нам нужно.
Максимум из четырех чисел
function Max(x1, x2, x3, x4 : integer) : integer;
begin
Max := Max(Max(x1, x2, x3), x4);
end;
Эта функция использует вызов двух предыдущих.
Программа для поиска и вывода максимальных чисел
все приведенные выше функции должны быть размещены в том же порядке над телом основной программы
В зависимости от количества аргументов, компилятор выбирает какую из функций вызывать.
begin
writeln(Max(1, 4));
writeln(Max(9, 2, 7));
writeln(Max(8, 3, 6, 5));
readln;
end.
Если предполагается сравнивать много чисел, то лучше всего представить их в виде массива, и искать минимальный или максимальный элемент в массиве.