Задание 2. Тип заданий 25: обработка массивов.
  • Задание:

    Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -300 до 300 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести индекс элемента, значение которого минимально и кратно двум.
    Исходные данные объявлены так, как показано ниже на примере для языка Pascal. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    Pascal:
    const
        n=20;
    var
        a: array[1..n] of integer;
        i, j, min: integer;
    begin
        for i:=1 to n do
            readln(a[i]);
    ...

    end.

     

  • Решение:

    Для определения количества нужных нам элементов проверим каждый элемент массива с помощью цикла for.

    По заданию нам даны три переменные — i, j, min. Переменную i используем как счетчик цикла, переменную min — для поиска значения элемента, переменную j — для сохранения индекса этого элемента.

    Так как мы ищем минимальный элемент, то перед проверкой массива переменной min следует присвоить максимально возможное значение, то есть min:=300.

    Каждый повтор цикла будет проверятся, соответствует ли элемент массива с индексом i условию, если соответствует, то переменной min будет присваиваться значение этого элемента, а переменной j — индекс этого элемента, то есть значение счетчика i.

    Теперь составим условие. Условию соответствует элемент, который 1. четный; 2. меньше переменной min. То есть:

    1. Так как число называется четным в том случае, если остаток от деления на 2 этого числа равен нулю, то для проверки четности элемента условие будет выглядеть так:

    (a[i] mod 2 = 0).

    2. Для поиска наименьшего элемента используем такое условие: 

    (a[i] < min).

    Составим программу:

     

    //присвоим переменной min максимально возможное значение

    min := 300;

    //проверим каждый элемент массива

    for i:=1 to n do

      if (a[i] mod 2 = 0) and (a[i] < min) then

      begin

        min := a[i];

        j := i;

      end;

    //выведем результат на экран

    writeln(j);

Поделиться:
 
Комментарии (4)
Valery Minnulin # 15 января 2016 в 23:28 0
Можно использовать заместо команды min команду A<A[i+1] ?
Информатик БУ # 16 января 2016 в 09:46 +1
Нет конечно, A[i+1] - элемент, следующий после проверяемого, а A - это вообще массив, а не элемент.
Алексей Алексеевич # 15 июня 2016 в 15:50 0
А обязательно писать
begin
min := a;
j := i;

Нельзя просто min := a; и вывод?
Дмитрий Музалев # 21 апреля 2016 в 23:02 0
Так 300- это максимальное число. Получается любое значение элемента массива (кроме 300) будет подходить n<300. Неудачно подобрано условие программы !
Перевести число из в Результат: 510 = 1012