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