Как найти максимальное из чисел?

Проще всего задача поиска максимального из трех, четырех и более чисел, решается перегрузкой функции нахождения максимума из двух.

Аналогичные функции можно написать для поиска минимального из чисел. Для этого достаточно сменить знак сравнения в функции с двумя аргументами(в первой из рассмотренных).

Для реализации сначала нужно написать функцию, которая находит максимальное из двух чисел.

Функция определения максимального из двух чисел

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. 

Если предполагается сравнивать много чисел, то лучше всего представить их в виде массива, и искать минимальный или максимальный элемент в массиве.

Смотрите также: