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




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

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

 

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

const N=70;

var

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

i, j, x, y: integer;

begin

for i:=1 to N do

readln(a[i]);

...

end.

N=70

DIM A(N) AS INTEGER

DIM I, J, X, Y AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

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

#include <iostream>

using namespace std;

#define N 70

int main() {

int a[N];

int i, j, x, y;

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

cin >> a[i];

алг

нач

цел N=70

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

цел i, j, x, y

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

ввод a[i]

кц

...

кон

Python

# допускается также

# использовать три

# целочисленные переменные j, x, y

a = []

n = 70

for i in range(0, n):

    a.append(int(input()))

...

 

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

Решение.

Пример программы на Паскале:

у:=2001;

for i:=1 to N-1

do begin x:=a[i]+a [i + 1];

if (a[i] mod 2 = a[i+l] mod 2) and (x < y)

then y:=x;

end;

writeln(у);

 

Допускается использование других приёмов программирования, приводящих к верному результату.

 

В частности, разрешается использовать следующие способы:

 

1. Отказ от использования отдельной переменной для суммы двух элементов. В этом случае сумма может вычисляться повторно:

 

if (a[i] mod 2 = a[i+l] mod 2) and (a[i]+a[i+1] 

 

2. Проверка совпадения чётности полным перебором вариантов:

 

if ( (a [i] mod 2 = 0) and (a[i + 1] mod 2 = 0) or (a[i] mod 2=1) and (a[i+l] mod 2=1)) and (a[i]+a[i+1] 

 

3. Проверка совпадения чётности по чётности суммы:

 

if (х mod 2=0) and (х<у)

 

4. Использование вложенных условных операторов вместо составного условия:

 

if (a[i] mod 2 = a[i+l] mod 2) then if x 

 

Допускаются и другие вариации при условии, что они соответствуют указанным в условии ограничениям и приводят к правильному ответу.