Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 100 и содержат итоговые баллы участников олимпиады по информатике. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет подсчитать и вывести средний балл среди участников, ставших призёрами олимпиады (призёрами олимпиады стали школьники, набравшие более 50 баллов). Гарантируется, что хотя бы один участник олимпиады стал её призёром. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
| Бейсик | Паскаль |
|---|---|
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 read (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 IF A(I) > 50 THEN X = X + A(I) Y = Y + 1 ENDIF NEXT I S = X / Y PRINT S | x:=0; y:=0; for i:=1 to N do if a[i]>50 then begin x:=x+a[i]; y:=y+1; end; s:=x/y; writeln(s); |
| Си | Алгоритмический язык |
x=0; y=0; for (i=0; i { x=x+a[i]; y++; } s=(float)x/y; cout << s; | x := 0 y := 0 нц для i от 1 до N если a[i] > 50 то x := x + a[i] y := y + 1 все кц s := x / y вывод s |
| Естественный язык | |
Записываем в переменные X и Y начальное значение, равное 0. В цикле от первого до тридцатого элемента сравниваем элементы исходного массива с 50. Если текущий элемент больше 50, то увеличиваем счётчик суммы баллов X на значение текущего элемента массива, а счётчик числа призёров олимпиады Y — на 1, иначе переходим к следующему элементу. После цикла производим деление счётчика суммы баллов X на счётчик числа призёров олимпиады Y и записываем результат в переменную S. Выводим значение переменной S. | |

