Задача к ЕГЭ по информатике на тему «соседние элементы, проверка условий» №2

Дан целочисленный массив из N  = 30  элементов. Элементы массива могут принимать целые значения от -10000 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, произведение которых положительно и дает остаток 2 при делении на 7. Под парой подразумевается два подряд идущих элемента массива. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с нуля.

|--------------------------------|------------------------------------|-------------------------| |Бейси-к-------------------------|Python------------------------------|А-лгори-тми-ческий-язы-к-| |CON  ST N ASIN   TEGER    = 30  |#   допуск ается такж е             |ал-г                     | |DIM  A (0TON   − 1)ASLON    G   |#   испол ьзовать три               |нач-                     | |DIM  IASLON    G                |# ц елочисл енны е п еремен ны е i,t,k  ц елN  = 30            | |    T ASLON   G                 |a = []                              |  ц-елтабa[0 : N − 1]    | |                                |                                    |  -------                | |    KASLON     G                |n = 30                              |  ц-елi,t,k               | |FORI   = 0T ON  − 1             |foriinrange (0,n) :                 |  н-ц-дляiот0д-оN −  1   | |    IN P U TA (I)               |  a.append (int(input ()))            |     вводa[i]            | |N EXT  I                        |...                                  |  к ц                    | |                                |                                    |  ----                   | |...                              |                                    |...                       | -EN-D------------------------------------------------------------------кон-----------------------

|--------------------------------|------------------------------------| |П-аскал-ь-----------------------|C-+-+-------------------------------| |const                           |#include  < iostream  >             | |  N  =  30                      |usingnamespacestd;                  | |var                             |constintN  = 30;                    | |                                |                                    | |  a : array[0..N  − 1]oflongint; |intmain (){                         | |  i,t,k : longint;              |longa[N ];                          | |begin                           |longi,t,k;                          | |  f ori := 0toN − 1do           |for(i = 0;i < N ;i + +)cin > > a[i]; | |     readln(a[i]);               |…                                  | |                                |                                    | |…                              |return0;                            | -end.——————————}————————————| » class=»math-display» width=»auto»></center> </p>
<p class= В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Cython 0.20). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

Например, для исходного массива из 6 элементов

-3

9

1

16

-2

5

11

-6

6

5

программа должна вывести

3

(Под условие подходят пары 9 и 1, 1 и 16, 6 и 5).

Мы будем рассматривать пары a[i]  и a[i + 1]  .

В k  будем хранить количество пар элементов массива, произведение которых положительно и дает остаток 2 при делении на 7. Так как изначально таких пар нет, обнулим переменную в первой строке программы.

В цикле от 0 до N −  1  (если мы укажем цикл до N  , то программа будет пытаться проверить пару a[N −  1]  и a[N ]  , но элемента a[N ]  не существует) будем для удобства записывать произведене a[i]  * a[i + 1 ]  в переменную t  , которую перед циклом приравняем к нулю.

Также будем проверять, что t > 0  » class=»math» width=»auto»> (положительность произведения) и <img decoding= (остаток от деления на 7 равен 2). Если условие выполняется, будем увеличивать k  на один. Вне цикла выведем на экран k  в соответствии с условием.

Пример программы на C + +  :

t = 0, k = 0;

for(i = 0;i < N − 1; i + + )  {

t = a [i] ∗ a[i + 1];

if ((t > 0)& & (t%7  ==  0))k + +;  » class=»math» width=»auto»> </p>
<p class= }

cout < < k;

Ответ: см. решение
Оцените статью
Я решу все!