Задание:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит номер третьего положительного элемента массива (если из массива вычеркнуть все неположительные элементы, этот элемент стоял бы в получившемся массиве на третьем месте). Если в массиве меньше, чем три положительных элемента, вывести сообщение об этом. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
|
Паскаль |
|
|
Си |
|
|
Естественный язык |
|
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные i, j, k. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. ... |
Решение:
Очевидно, что нужно считать найденные положительные элементы (например, с помощью переменной k) и, когда k станет равно 3, запомнить номер текущего элемента (в переменной j).
Решение на естественном языке. Записываем в переменную k начальное значение 0. Затем в цикле перебираем все элементы массива с 1-ого по 30-ый. Если очередной элемент больше нуля, увеличиваем счетчик k. Если k=3, записываем номер текущего элемента в переменную j. Если после окончания цикла k<3, выводим сообщение, что в массиве меньше трех положительных элементов, иначе выводим значение переменной j.
Решение на Паскале
const N=30;
var a: array [1..N] of integer;
i, j, k: integer;
begin
for i:=1 to N do readln(a[i]);
k:=0;
for i:=1 to N do
if a[i] > 0 then begin
k:=k+1;
if k = 3 then j := i;
end;
if k < 3 then
writeln('Меньше трех положительных элементов')
else writeln(j);
end.