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

