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

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

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

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

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

function Min(x1, x2 : integer) : integer;
begin
  if x1 < x2 then
    Min := x1
  else
    Min := x2;
end; 

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

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

function Min(x1, x2, x3 : integer) : integer;
begin
  Min := Min(Min(x1, x2), x3);
end;

А что если нужно сравнить четыре, пять и больше чисел, и найти минимальное из них?

Без проблем, мы можем писать столько перегруженных функций, сколько нам нужно.

Минимум из четырех чисел

function Min(x1, x2, x3, x4 : integer) : integer;
begin
  Min := Min(Min(x1, x2, x3), x4);
end; 

Эта функция использует вызов двух предыдущих.

Программа для поиска и вывода минимальных чисел

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

В зависимости от количества аргументов, компилятор выбирает какую из функций вызывать.

begin
  writeln(Min(3, 5));
  writeln(Min(9, 1, 0));
  writeln(Min(8, 4, 7, 2));
  readln;
end. 

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

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