СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 25 № 7936

Дан массив, содержащий неотрицательные целые числа. Необходимо вывести:

- максимальный чётный элемент, если количество чётных элементов не меньше, чем нечётных;

- максимальный нечётный элемент, если количество нечётных элементов больше, чем чётных.

Например, для массива из шести элементов, равных соответственно 4, 6, 12, 17, 3, 8, ответом будет 12 — наибольшее чётное число, поскольку чётных чисел в этом массиве больше.

Напишите на одном из языков программирования программу для решения этой задачи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных переменных.

 

БейсикПаскаль

CONST N=2000

DIM A(N) AS INTEGER

DIM I, J, K, M AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

END

const

N=2000;

var

a: array [1..N] of integer;

i, j, k, m: integer;

begin

for i:=1 to N do

readln(a[i]);

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

#define N 2000

int main(){

int a[N];

int i, j, k, m;

for (i=0; i < N; i++)

 

cin >> a[i];

return 0;

}

алг

нач

цел N=2000 | Изменять значение
этой переменной нельзя

целтаб a[1:N]

цел i, j, k, m

нц для i от 1 до N

ввод a[i]

кц

кон

Python

// допускается также использовать

// целочисленные переменные j, k, m

a = []

n = 2000 // менять значение n нельзя

for i in range(0, n):

    a.append(int(input()))

 

В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

Решение.

Чтобы за один проход определить количество чётных и нечётных элементов и соответствующие им максимумы, нужны 5 переменных (два счётчика, два максимума и индекс), а в условии разрешено использовать только 4. Чтобы обойти это ограничение, заметим, что, поскольку общее количество элементов известно, можно подсчитывать количество только в одной группе. Эта идея реализована в следующем фрагменте на языке Паскаль.

Возможно также двухпроходное решение: на первом проходе определяется количество чётных и нечётных элементов, на втором определяется максимум в соответствующей группе. Эта идея реализована в следующем фрагменте на алгоритмическом языке.

 

Паскаль
j:=0; k:=0; m:=0;

for i:=1 to N do begin

if a[i] mod 2 = 0 then begin

j:=j+1;

if a[i]>k then k:=a[i];

end

else if a[i]>m then m:=a[i];

end;

if j>=n-j

then writeln(k)

else writeln(m);

Алгоритмический язык
j:=0; k:=0

нц для i от 1 до N

если mod(a[i],2)=0

то j:=j+1

иначе k:=k+1

все

кц

если j>=k

то j:=0

иначе j:=1

все

m:=0

нц для i от 1 до N

если mod(a[i],2) = j

то m := imax(m,a[i])

все

кц

вывод m