Тематический блок «Программирование» ЕГЭ-2015 Задания 19, 20, 21, 25 Массивы (вектора) Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом. Особенности: • все элементы имеют один тип • весь массив имеет одно имя • все элементы расположены в памяти рядом Примеры: • список учеников в классе • квартиры в доме • школы в городе • данные о температуре воздуха за год 2 Массивы НОМЕР элемента массива (ИНДЕКС) A 1 2 3 4 5 5 10 15 20 25 A[1] A[2] A[3] A[4] A[5] НОМЕР (ИНДЕКС) элемента массива: 2 A[2] ЗНАЧЕНИЕ элемента массива: 10 3 Объявление массивов Зачем объявлять? • определить имя массива • определить тип массива • определить число элементов • выделить место в памяти Массив целых чисел: имя начальный индекс конечный индекс тип элементов var A : array[ 1 .. 5 ] of integer ; Размер через константу: const N=5; var A: array[1.. N ] of integer; 4 Стандартные алгоритмы обработки одномерных массивов 1. Найти сумму элементов массива Program Summa; Const N = 20; Var i, S:integer; A: array [1..N] of integer; Begin {Ввод массива} for i:=1 to N do Readln (A[i]); {Обработка массива} S:=0; for i:=1 to N do S:=S+A[i]; {Вывод результата} Write (S); End. 2. Найти произведение элементов массива (*) P:=1; for i:=1 to N do P:=P*A[i]; Write (P); End. 3. Найти среднее арифметическое элементов массива (*) S:=0; for i:=1 to N do S:=S+A[i]; S:=S/N; Write (S); End. 4. Найти сумму положительных элементов массива (*) S:=0; for i:=1 to N do if A[i]>0 then S:=S+A[i]; Write (S); End. 5. Найти количество отрицательных элементов массива (*) k:=0; for i:=1 to N do if A[i]<0 then k:=k+1; Write (k); End. 6. Найти среднее арифметическое четных элементов массива (*) S:=0; k:= 0; for i:=1 to N do if A[i] mod 2=0 then begin k:=k+1; S:=S+A[i]; end; S:=S/k; Write (S); End. 7. Найти максимальный элемент массива (*) max:=A[1]; for i:=1 to N do if A[i]>max then max:=A[i]; Write (max); End. 8. Найти минимальный элемент массива и его номер. (*) min:=A[1]; imin:= 1; for i:=1 to N do if A[i]<min then begin min:=A[i]; imin:=i; end; Write (min, imin); End. C2 (высокий уровень, время – 30 мин) Тема: Обработка массива (написать программу из 10-15 строк на языке программирования или алгоритм на естественном языке). Что нужно знать: • массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом; • для обращения к элементу массива используют квадратные скобки, запись A[i] обозначает элемент массива A с номером (индексом) i; • для обработки всех элементов массива используется цикл вида for i:=1 to N do begin { что-то делаем с элементом A[i] } end; • переменная i обозначает номер текущего элемента массива, она меняется от 1 до N с шагом 1, то есть мы «проходим» последовательно все элементы; Задание 25 (С2) С2. Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди трёхзначных элементов массива, не делящихся на 9. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом не кратно 9, то выведите сообщение «Не найдено». Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Const N = 20; var a: array [1..N] of integer; i, j, max: integer; begin for i := 1 to N do readln(a[i]); ... end. В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке). Задание 19 (А12) (повышенный уровень, время – 5мин) Тема: Работа с массивами и матрицами в языке программирования. Массив A одномерный; в программе рассматривается его фрагмент, соответствующий значениям индекса от 1 до n. J := 1; for i:=1 to n do begin if A[i]<A[j] then j := i; end; s := j; Чему будет равно значение переменной s после выполнения данного фрагмента программы? 1) минимальному элементу в массиве A 2) индексу минимального элемента в массиве A (наименьшему из таких индексов, если минимальных элементов несколько) 3) индексу минимального элемента в массиве A (наибольшему из таких индексов, если минимальных элементов несколько) 4) количеству элементов, равных минимальному в массиве A Задание 20 (В8) (повышенный уровень, время – 5мин) Тема: Анализ программы, содержащей подпрограммы, циклы и ветвления. Ниже на четырех языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 13, а потом 5. var x, a, b, c: integer; begin readln(x); a:=0; b:=10; while x > 0 do begin c := x mod 10; a := a + c; if c < b then b := c; x := x div 10; end; writeln(a); write(b); end. Задание 21 (В14) (повышенный уровень, время – 6 мин.) Тема: Анализ программы с подпрограммами Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма var a,b,t,M,R : integer; Function F(x: integer): integer; begin F:= 2*(x*x-16)*(x*x-16)+5; end; begin a:=-11; b:=11; M:=a; R:=F(a); for t:= a to b do begin if (F(t)<R)then begin M:=t; R:=F(t); end; end; write(M+6) end.