Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 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]); … } | Объявляем целочисленные переменные I, X, Y. Объявляем вещественную переменную S. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать переменные, аналогичные переменным, используемым в алгоритме, записанном на естественном языке, с учетом синтаксиса и особенностей используемого вами языка программирования.
Решение задачи №2.
Паскаль | Бейсик | Си | Естественный язык |
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; printf("%f", s); | Записываем в переменные X и Y начальное значение, равное нулю. В цикле от первого элемента до тридцатого находим остаток от деления элемента исходного массива на два. Если этот остаток равен единице, то увеличиваем счетчик суммы X на значение текущего элемента массива, а счетчик количества Y на 1. Переходим к следующему элементу. После цикла производим деление счетчика суммы X на счетчик количества Y и записываем результат в переменную S. Выводим значение переменной S. |
Зададим цикл от 1 до 30 в котором будем определять является ли элемент массива четным или нечетным с помощью функции mod (получение остатка от деления), если выражение a[i] mod 2 =1, то элемент массива нечетный.
Далее нам надо подсчитать в этом же цикле сумму нечетных элементов массива и их количество. Для этого используем переменные X (будет подсчитывать сумму нечетных элементов) и Y(будет подсчитывать количество нечетных элементов), начальные значения данным переменным задаем 0. Если элемент массива нечетных переменная X вырастает на величину элемента массива, а переменная Y на единицу.
После прохода цикла переменные X и Y имеют величину суммы нечетных элементов массива и количества данных элементов. Осталось найти среднее арифметическое, среднее арифметическое будет присвоено переменной S, делим X на Y, выводим результат.
Возврат к списку задач
Далее нам надо подсчитать в этом же цикле сумму нечетных элементов массива и их количество. Для этого используем переменные X (будет подсчитывать сумму нечетных элементов) и Y(будет подсчитывать количество нечетных элементов), начальные значения данным переменным задаем 0. Если элемент массива нечетных переменная X вырастает на величину элемента массива, а переменная Y на единицу.
После прохода цикла переменные X и Y имеют величину суммы нечетных элементов массива и количества данных элементов. Осталось найти среднее арифметическое, среднее арифметическое будет присвоено переменной S, делим X на Y, выводим результат.
Возврат к списку задач