Решение задач блока ExamBegin 41-50
Решение задач из задачника по программированию М. Э. Абрамяна. Задачи из блока ExamBegin: «ЕГЭ по информатике: базовые алгоритмы».
Задача ExamBegin41
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N целых чисел. Найти количество чисел, которые встречаются в массиве более двух раз.

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of integer;
n, i, j, h, k, t: integer;
begin
Task('ExamBegin41');
h := 0;
Read(n);
for i := 1 to n do
Read(m[i]);
for i := 1 to n do
begin
k := 0;
t := m[i];
for j := 1 to n do
if (t = m[j]) and (m[j] <> 0) then begin
k := k + 1;
m[j] := 0;
end;
if k > 2 then h := h + 1;
end;
Write(h);
end.
PascalЗадача ExamBegin42
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N целых чисел. Найти сумму четных элементов массива. Если четные элементы отсутствуют, то вывести 0.

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of integer;
n, i, sum: integer;
begin
Task('ExamBegin42');
sum := 0;
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if m[i] mod 2 = 0 then sum := sum + m[i];
end;
Write(sum);
end.
PascalЗадача ExamBegin43
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N вещественных чисел. Найти произведение положительных элементов массива. Если положительные элементы отсутствуют, то вывести 1.

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of real;
n, i: integer;
p: real;
begin
Task('ExamBegin43');
p := 1;
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if m[i] > 0 then p := p * m[i];
end;
Write(p:4:2);
end.
PascalЗадача ExamBegin44
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N вещественных чисел. Найти среднее арифметическое всех элементов массива, абсолютное значение которых (т. е. их модуль) меньше 10. Если требуемые элементы отсутствуют, то вывести текст «NO».

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of real;
n, i, k: integer;
sum: real;
begin
Task('ExamBegin44');
k := 0; sum := 0;
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if abs(m[i]) < 10 then begin
sum := sum + m[i];
k := k + 1;
end;
end;
if k = 0 then Write('NO')
else Write(sum / k:4:2);
end.
PascalЗадача ExamBegin45
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N вещественных чисел. Найти минимальный и максимальный элементы массива и вывести их в указанном порядке (каждый элемент выводить на новой строке и снабжать комментарием «MIN=» или «MAX=»).

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of real;
n, i: integer;
min, max: real;
begin
Task('ExamBegin45');
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if i = 1 then begin
min := m[i];
max := m[i];
end;
if m[i] < min then min := m[i];
if m[i] > max then max := m[i];
end;
Writeln('MIN=', min:4:2);
Writeln('MAX=', max:4:2);
end.
PascalЗадача ExamBegin46
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N целых чисел. Найти номер первого максимального элемента массива (элементы нумеруются от 1).

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of integer;
n, i, max: integer;
begin
Task('ExamBegin46');
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if i = 1 then max := m[i];
if m[i] > max then max := m[i];
end;
i := 1;
while m[i] <> max do
i := i + 1;
Write(i);
end.
PascalЗадача ExamBegin47
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N целых чисел. Найти номер последнего минимального элемента массива (элементы нумеруются от 1).

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of integer;
n, i, min, k: integer;
begin
Task('ExamBegin47');
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if i = 1 then min := m[i];
if m[i] < min then min := m[i];
if m[i] = min then k := i;
end;
Write(k);
end.
PascalЗадача ExamBegin48
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N вещественных чисел. Найти максимальный отрицательный элемент массива. Если отрицательных элементов в массиве нет, то вывести текст «NO».

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of real;
n, i: integer;
max: real;
k: boolean;
begin
Task('ExamBegin48');
k := false;
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if i = 1 then max := m[i];
if (m[i] > max) and (m[i] < 0) then max := m[i];
if m[i] < 0 then k := true;
end;
if k = false then Write('NO')
else Write(max:4:2);
end.
PascalЗадача ExamBegin49
На вход в первой строке подается целое положительное число N, а во второй строке — массив из N целых чисел. Найти минимальный четный элемент массива. Если четных элементов в массиве нет, то вывести текст «NO».

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of integer;
n, i, min: integer;
k: boolean;
begin
Task('ExamBegin49');
k := false;
Readln(n);
for i := 1 to n do
begin
Read(m[i]);
if i = 1 then min := m[i];
if (m[i] < min) and (m[i] mod 2 = 0) then min := m[i];
if m[i] mod 2 = 0 then k := true;
end;
if k = false then Write('NO')
else Write(min);
end.
PascalЗадача ExamBegin50
На вход в первой строке подаются два вещественных числа A и B (A < B), во второй строке — целое положительное число N, а в третьей строке — массив из N вещественных чисел. Среди элементов массива, принадлежащих интервалу (A, B), найти минимальный и максимальный и вывести их в указанном порядке (каждое число выводить на новой строке и снабжать комментарием «MIN=» или «MAX=»). Если массив не содержит элементов, лежащих в интервале (A, B), то вывести текст «NO».

uses PT4Exam;
const
R = 100;
var
m: array[1..R] of real;
a, b, max, min: real;
n, i: integer;
k: boolean;
begin
Task('ExamBegin50');
Readln(a, b);
Read(n);
max := a; min := b; k := false;
for i := 1 to n do
begin
Read(m[i]);
if (m[i] > a) and (m[i] < b) then begin
k := true;
if m[i] > max then max := m[i];
if m[i] < min then min := m[i];
end;
end;
if k = false then Writeln('NO')
else begin
WriteLn('MIN=', min:4:2);
WriteLn('MAX=', max:4:2);
end;
end.
Pascal