Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести среднее арифметическое элементов массива, имеющих нечетное значение. Гарантируется, что в исходном массиве хотя бы один элемент имеет нечетное значение.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
| Бейсик | Паскаль |
|---|---|
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 | 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. |
| Си++ | Алгоритмический |
#include <iostream> using namespace std; #define N 30 int main(void) { int a[N]; int i, x, y; float s; for (i=0; i < N; i++) cin >> a[i]; … } | алг нач цел N = 30 целтаб a[1:N] цел i, x, y вещ s нц для i от 1 до N ввод a[i] кц ... кон |
| Русский (естественный) язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … | |
| Python | |
# допускается также # использовать две # целочисленные переменные x, y # и вещественную переменную s a = [] n = 30 for i in range(0, n): a.append(int(input())) ... | |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок─схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.
Паскаль
x:=0;
y:=0;
for i:=1 to N do
if (a[i] mod 2=1) then begin
x:=x+a[i];
y:=y+1;
end;
s:=x/y;
writeln(s);
Бейсик
X = 0
Y = 0
FOR I = 1 TO N
IF A(I) MOD 2 = 1 THEN
X = X + A(I)
Y = Y + 1
ENDIF
NEXT I
S = X / Y
PRINT S
Си
x=0;
y=0;
for (i=0; i<N; i++)
if (a[i]%2==1)
{ x=x+a[i];
y++;
}
s=(float)x/y;
cout « s « endl;
Естественный язык
Записываем в переменные X и Y начальное
значение, равное нулю. В цикле от первого
элемента до тридцатого находим остаток от
деления элемента исходного массива на два.
Если этот остаток равен единице, то
увеличиваем счетчик суммы X на значение
текущего элемента массива, а счетчик
количества Y на 1. Переходим к следующему
элементу.
После цикла производим деление счетчика
суммы X на счетчик количества Y и
записываем результат в переменную S.
Выводим значение переменной S.

