/ Материалы / Язык программирования: Паскаль / Дан целочисленный массив...номер третьего....

Дан целочисленный массив...номер третьего....

Задание:

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

Паскаль

  1. const N=30;
  2. var a: array [1..N] of integer;
  3.     i, j, k: integer;
  4.  
  5.   for i:=1 to N do readln(a[i]);
  6.   ...
  7. end.

Си

  1. #include<stdio.h>
  2. int main(void) {
  3.     const int N=30;
  4.     int a[N];
  5.     int i, k, j;
  6.     for (i=0; i<N; i++)
  7.        scanf(″%d″, &a[i]);
  8.   ...
  9.  }

Естественный язык

Объявляем массив 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.


Похожие материалы

avatar
Наверх