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