Найти разность между максимальным и минимальным элементами массива | Язык Паскаль

Найти разность между максимальным и минимальным элементами массива

В одномерном массиве найти минимальный и максимальный элементы. Вычислить их разность.

Например, дан массив [3, 5, 9, 4, 2, 6]. Максимальным числом является 9, минимальным является 2. Разность составляет 9-2=7.

В данном случае минимум и максимум можно искать по индексу и по значению.

Рассмотрим сначала поиск по значению: пусть в переменные min и max записываются соответственно значения минимального и максимального элементов. До цикла им надо присвоить такие значения, которые выходят за границы диапазона массива. При этом переменная max должна получить значение, выходящее за нижнюю границу (меньше возможного), а min - за верхнюю границу (больше возможного).

Будем в цикле перебирать элементы массива и сравнивать их значения с min и max. Если очередной элемент больше max, то присвоим его значение переменной max. Если меньше значения переменной min, то присвоим min. При этом если первое условие "сработало", то незачем проверять второе. Поэтому следует использовать else, в которое вложено второе if.

После цикла, чтобы ответить на вопрос задачи, надо из max вычесть min. Результат вывести на экран.

const N = 10;

var
    a: array[1..N] of integer;
    i: byte;
    min, max: integer;

begin
    randomize;
    for i := 1 to N do a[i] := random(100);
    for i := 1 to N do write(a[i]:3);
    writeln;

    min := 100;
    max := -1;

    for i := 1 to N do begin
        if a[i] > max then 
            max := a[i]
        else 
            if a[i] < min then 
                min := a[i];
    end;

    writeln(max,' - ', min, ' = ', max-min);    
end.

При поиске по индексу в переменные min и max (в данном случае им лучше иметь тип byte) следует записывать не значения элементов массива, а индексы минимального и максимального элементов.

До цикла предполагается, что первый элемент является и минимальным и максимальным. Поэтому обоим переменным присваивается значение 1. Цикл начинается со второго элемента.

const N = 10;

var
    a: array[1..N] of integer;
    i, min, max: byte;

begin
    randomize;
    for i := 1 to N do a[i] := random(100);
    for i := 1 to N do write(a[i]:3);
    writeln;

    min := 1;
    max := 1;
    for i := 2 to N do begin
        if a[i] > a[max] then 
            max := i
        else 
            if a[i] < a[min] then 
                min := i;
    end;

    writeln(a[max], ' - ', a[min], ' = ', a[max] - a[min]);  
end.

Пример выполнения программы:

 67 95 74 37 45 33 21 94 61 35
95 - 21 = 74