Контрольные тренировочные задания
(решения)



Часть 2


Задание 25



Решение примера 1

Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива НЕ кратных 3.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.


1
2
3
4
5
6
7
8

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

Решение.

Рассмотрим заданный фрагмент решения:

  • в цикле со счетчиком i запрашиваются значения элементов массива, т.е. формируется массив;
  • из постановки задания видим, что нам придется искать количество чего-то, это значит, что нужно использовать переменную счетчик;
  • объявлены три целочисленных переменных: i,j,k; переменная i использована в первом цикле, значит для счетчика можно взять переменную k;
  • счетчик всегда нужно обнулять, поэтому следующим оператором будет
  • определим, количество чего нам необходимо считать: количество элементов массива не кратных 3. Кратность можно определить через остаток от деления: если значение элемента массива при делении на 3 в остатке не дает 0, значит элемент не кратен трем;
  • остаток при делении в паскале — оператор mod. Поскольку нам необходимо просмотреть каждый элемент массива, то это нужно делать в цикле for;
  • так как переменная i уже использована в первом цикле for, то для очередного цикла возьмем неиспользованную переменную j:

    for j:=1 to N do
      if a[j] mod 3 <> 0 then
  • если условие истинно (т.е. нашелся элемент массива, не кратный трем), то мы увеличиваем счетчик:
  •      inc(k);

    inc(k);

  • после цикла остается вывести значение счетчика, т.е. вывести количество элементов массива не кратных 3:
  • writeln(k);

    writeln(k);


Результат:

k:=0;
for j:=1 to N do
  if a[j] mod 3 <> 0 then
    inc(k);
writeln(k);

Возврат на страницу    Решение примеров части 2 задание 25



Наверх