Задание:
Дан целочисленный массив из 30 элементов. Элементы могут принимать значения от 0 до 100– баллы, полученные на ЕГЭ. Опишите на русском языке или на одном из языков программирования алгоритм, который подсчитывает и выводит средний балл учащихся, сдавших экзамен (получивших оценку более 20 баллов). Гарантируется, что хотя бы один ученик в классе успешно сдал экзамен. Исходные данные объявлены так, как показано ниже. Использовать другие переменные запрещается.
Паскаль |
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<stdio.h> int main(void) { const int N=30; 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-ый. ... |
Решение:
Нужно найти количество учеников, получивших оценку более 20 баллов (по условию – это не нуль), и общую сумму их оценок. Средняя оценка равна сумме оценок, деленной на их количество.
В переменной x будем считать учеников, сдавших экзамен, а в переменной y – накапливать сумму их оценок. Сначала в обе эти переменные запишем нули (начальные значения). Затем в цикле от 1 до 30 рассматриваем все элементы массива A. Если очередной элемент больше 20, увеличиваем переменную x на единицу (считаем этого ученика) и добавляем значение этого элемента массива к старому значению переменной y. После окончания цикла выводим результат деления y на x. Недостающая часть программы может выглядеть так:
x := 0; y := 0; { не забыть начальные условия! }
for i:=1 to N do
if A[i] > 20 then begin
x := x + 1;
y := y + A[i]
end;
s := y / x;
writeln('Средний балл ', s:10:3);