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




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

Дан массив, содержащий 2016 целых чисел. Необходимо найти и вывести сумму тех элементов этого массива, чётность которых не совпадает с чётностью минимального элемента.

Например, в массиве из 6 элементов, равных соответственно 2, 3, 1, 5, 6, 4, минимальный элемент нечётный (1), значит, ответом будет сумма чётных элементов этого массива 2 + 6 + 4 = 12.

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

 

БейсикPython

CONST N=2016

DIM A(N) AS INTEGER

DIM I, M, S, P AS INTEGER

FOR I = 1 TO N

  INPUT A(I)

NEXT I

END

# допускается также использо-

# вание целочисленной

# переменной m, s, p

a = []

N = 2016

for i in range(0, N):

  a.append(int(input()))

ПаскальАлгоритмический язык

const

  N=2016;

var

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

  i, m, s, p: integer;

begin

  for i:=1 to N do

    readln(a[i]);

  …

end.

алг

нач

  цел N=2016

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

  цел i, m, s, p

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

    ввод a[i]

  кц

кон

Си++

#include <iostream>

using namespace std;

#define N 2016

int main(){

  int a[N];

  int i, m, s, p;

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

    cin >> a[i];

  …

  return 0;

}

 

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

Решение.

Чтобы получить ответ за один просмотр всех элементов массива, необходимо подсчитать суммы чётных и нечётных элементов, а также определить минимум, после чего выбрать нужную сумму в зависимости от чётности минимума.

Допустимо и двухпроходное решение: на первом проходе определяется минимум, а на втором вычисляется нужная сумма. Ниже продемонстрированы оба способа решения.

 

Пример правильной программы на языке Паскаль (способ 1)

s:=0; p:=0;

m:=a[1];

for i:=1 to N do begin

  if a[i] < m then m:=a[i];

  if a[i] mod 2 = 0

    then s := s + a[i]

    else p := p + a[i];

end;

if m mod 2 = 0

  then writeln(p)

  else writeln(s)

 

Пример правильной программы на языке Паскаль (способ 2)

m:=a[1];

for i:=2 to N do begin

  if a[i] < m then m:=a[i]

end;

s:=0;

for i:=1 to N do begin

  if a[i] mod 2 <> m mod 2

    then s := s + a[i]

end;

writeln(s)