Минимальный из элементов массива с нечетными индексами

Задача

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

Решение

Поскольку индексация массивов в Паскале начинается с единицы (нечетный индекс), то поиск минимального значения следует начинать с первого элемента. Каждый последующий проверяемый элемент будет иметь индекс, отличающийся от предыдущего на 2. Это значит, что переменную-индекс надо при каждой итерации цикла увеличивать на два.

Так как в языке Pascal для цикла for нельзя указать шаг (от всегда равен единице), воспользуемся циклом while. Пусть в переменной min содержится индекс минимального элемента. До цикла предположим, что первый элемент массива и есть минимальный, т. е. присвоим min значение 1. Введем счетчик i, которому до цикла присвоим значение 3, так как начнем перебирать с третьего элемента - он следующий с нечетным индексом. В теле цикла будем увеличивать i на 2, таким образом счетчик будет указывать на следующий нечетный элемент.

В цикле будем проверять, не меньше ли элемент с индексом i элемента с индексом min. Если это так, то присвоим min значение i. В итоге будет найден индекс минимального элемента с нечетным индексом.

const N = 15;
var
    a: array[1..N] of integer;
    i, min: 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;
    i := 3;
    while i <= N do begin
        if a[i] < a[min] then
            min := i;
        i := i + 2;
    end;
    writeln(a[min]);
end.

Задачу можно решить другим способом: используя цикл for. В теле цикла надо проверять индекс на нечетность (например, с помощью встроенной в Pascal функции odd()).

const N = 15;
var
    a: array[1..N] of integer;
    i, min: 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;
    for i:=3 to N do 
        if odd(i) then
            if a[i] < a[min] then
                min := i;
    writeln(a[min]);
end.

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

 73 65 96  8 22 95 50 19 74 63 90 63 12 49 49
12

Тема

Одномерные массивы

Уровень

Простые задачи

Последняя редакция

Добавить комментарий