Дан
целочисленный массив из 30 элементов. Элементы массива могут принимать
значения от –1000 до 1000. Опишите на русском языке или на одном из
языков программирования алгоритм, который позволяет подсчитать и
вывести среднее арифметическое положительных элементов массива. Если в
массиве нет положительных элементов, программа должна вывести сообщение
«положительных элементов нет».
Исходные данные объявлены так, как
показано ниже. Запрещается использовать переменные, не описанные ниже,
но разрешается не использовать часть из них.Паскаль | Бейсик | Си | Естественный язык |
const N=30; var a: array [1..N] of integer; i, x, y: integer; s: real; begin for i:=1 to N do readln(a[i]); … end. | N=30 DIM A(N) AS INTEGER DIM I, X, Y AS INTEGER DIM S AS SINGLE FOR I = 1 TO N INPUT A(I) NEXT I … END | #include <stdio.h> #define N 30 void main(void) {int a[N]; int i, x, y; float s; for (i=0; i<N; i++) scanf("%d", &a[i]); … } | Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
В
качестве ответа Вам необходимо привести фрагмент программы (или
описание алгоритма на естественном языке), который должен находиться на
месте многоточия. Вы можете записать решение также на другом языке
программирования (укажите название и используемую версию языка
программирования, например, Borland Pascal 7.0) или в виде блок-схемы.
В этом случае вы должны использовать переменные, аналогичные
переменным, используемым в алгоритме, записанном на естественном языке,
с учетом синтаксиса и особенностей используемого вами языка
программирования.
Решение задачи №3
Паскаль | Бейсик | Си | Естественный язык |
x:=0; y:=0; for i:=1 to N do if a[i]>0 then begin x:=x+a[i]; y:=y+1; end; if y>0 then writeln(x/y); else writeln('положительных элементов нет'); | X = 0 Y = 0 FOR I = 1 TO N IF A(I) > 0 THEN X = X + A(I) Y = Y + 1 ENDIF NEXT I IF Y>0 THEN PRINT X/Y ELSE PRINT "положительных элементов нет" ENDIF | x=0; y=0; for (i=0; i<N; i++) if (a[i]>0) { x+=a[i]; y++; } if (y>0) printf("%f", (float)x/y); else printf("положительных элементов нет"); | Записываем в переменные X и Y начальное значение, равное нулю. В цикле от первого элемента до тридцатого сравниваем значение элемента исходного массива с нулем. Если элемент массива больше нуля, то увеличиваем счетчик суммы X на значение текущего элемента массива, а счетчик количества Y на 1. Переходим к следующему элементу. После цикла проверяем значение счетчика Y. Если Y>0, то выводим частное от деления X на Y, иначе выводим сообщение «положительных элементов нет». |
![](/Vopros.jpg)
- Переменные X и Y будут принимать значения суммы положительных элементов и количество положительных элементов соответственно, начальное значение переменных равно нулю.
- В цикле от 1 до 30 проверяем является ли элемент массива положительным, если да, то переменная X увеличивает свое значение на величину элемента массива, а переменная Y увеличивается на единицу. Таким образом мы подсчитали сумму положительный элементов массива и их количество.
- Далее проверяем есть ли в массиве положительные элементы (Y>0), если есть, то выводим на экран среднее арифметическое (writeln(x/y)), если нет положительных элементов , то выводим надпись "положительных
элементов нет"
![](/i_back.gif)