Разбор задачи C2 (демо ЕГЭ 2010)
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Для получения положительной оценки за тест требовалось набрать не менее 20 баллов. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет найти и вывести минимальный балл среди учащихся, получивших за тест положительную оценку. Известно, что в классе хотя бы один учащийся получил за тест положительную оценку.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Паскаль | Бейсик |
---|---|
const N=30; var a: array [1..N] of integer; i, j, min: integer; begin for i:=1 to N do readln(a[i]); … end. |
N=30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER 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, j, min; for (i=0; i<N; i++) scanf("% d", &a[i]); … } |
|
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Фрагмент решения в программе выделен розовым:
Паскаль | Бейсик |
---|---|
const N=30; var a: array [1..N] of integer; i, j, min: integer; begin for i:=1 to N do readln(a[i]); min:=100; for i:=1 to N do begin if (a[i]>=20) and (a[i]<min) then min:=a[i]; end; writeln(min); end. |
N=30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I MIN = 100 FOR I = 1 TO N IF A(I) < MIN AND A(I) >= 20 THEN MIN = A(I) ENDIF NEXT I PRINT MIN END |
Си | Алгоритмический язык |
#include <stdio.h> #define N 30 void main(void) { int a[N]; int i, j, min; for (i=0; i<N; i++) scanf("% d", &a[i]); min=100; for (i=0; i<N; i++){ if ((a[i]<min)&& (a[i]>=20)) min=a[i]; } printf("% d", min); } |
|
Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. Записываем в переменную MIN начальное значение, равное 100. В цикле от первого элемента до тридцатого сравниваем элементы исходного массива с 20. Если текущий элемент больше или равен 20,то сравниваем значение текущего элемента массива со значением переменной MIN. Если текущий элемент массива меньше MIN, то записываем в MIN значение этого элемента массива. Переходим к следующему элементу. После завершения цикла выводим значение переменной MIN. |