25. Алгоритмы обработки массивов

Демонстрационный вариант ЕГЭ 2018 г. – задание №25 — Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству.
Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки.
Например, для массива из шести элементов: 4 115 7 195 25 106 программа должна вывести числа 4 2 7 2 25 106
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

Бейсик Python
CONST N AS INTEGER = 30
DIM A (1 TO N) AS LONG
DIM I AS LONG,
J AS LONG,
K AS LONG
FOR I = 1 TO N
	INPUT A(I)
NEXT I
...
END
# допускается также
# использовать две
# целочисленные переменные j и k
a = []
n = 30
for i in range(0, n):
	a.append(int(input()))
...
Алгоритмический язык Паскаль
алг
нач
	цел N = 30
	целтаб a[1:N]
	цел i, j, k
	нц для i от 1 до N
		ввод a[i]
	кц
	...
кон
const
N = 30;
var
	a: array [1..N] of longint;
	i, j, k: longint;
begin
for i := 1 to N do
	readln(a[i]);
...
end.
C++
#include <iostream>
using namespace std;
const int N = 30;
int main() {
long a[N];
long i, j, k;
for (i = 0; i<N; i++)
	cin >> a[i];
...
return 0;
}

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


Демонстрационный вариант ЕГЭ 2017 г. – задание №25 — Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых десятичная запись хотя бы одного числа оканчивается на 2. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из пяти элементов: 16 3 142 55 22 – ответ: 3.
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

Бейсик

CONST N = 40
DIM A (1 TO N) AS INTEGER
DIM I, J, K, AS INTEGER
FOR I = 1 TO N
	INPUT A(I)
NEXT I
...
END

Python

//допускается также использовать
//две целочисленные переменные j и k
a = []
n = 40
for i in range(0, n):
	a.append(int(input()))
...

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

алг
нач
	цел N = 40
	целтаб a[1:N]
	цел i, j, k
	нц для i от 1 до N
		ввод a[i]
	кц
	...
кон

Паскаль

const
	N = 40;
var
	a: array [1..N] of integer;
	i, j, k: integer;
begin
	for i := 1 to N do
		readln(a[i]);
	...
end.

Си

#include <stdio.h>
#define N 40
int main() {
	int a[N];
	int i, j, k;
	for (i = 0; i < N; i++)
		scanf("%d", &a[i]);
	...
	return 0;
}

Естественный язык

Объявляем массив A из 40 элементов.
Объявляем целочисленные переменные I, J, K.
В цикле от 1 до 40 вводим элементы
массива A с 1-го по 40-й.
…

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


Демонстрационный вариант ЕГЭ 2016 г. – задание №25

Дан це­ло­чис­лен­ный мас­сив из 20 эле­мен­тов. Эле­мен­ты мас­си­ва могут при­ни­мать целые зна­че­ния от –10 000 до 10 000 вклю­чи­тель­но. Опи­ши­те на есте­ствен­ном языке или на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти ко­ли­че­ство пар эле­мен­тов мас­си­ва, в ко­то­рых хотя бы одно число де­лит­ся на 3. В дан­ной за­да­че под парой под­ра­зу­ме­ва­ет­ся два под­ряд иду­щих эле­мен­та мас­си­ва.

На­при­мер, для мас­си­ва из пяти эле­мен­тов: 6; 2; 9; –3; 6 – ответ: 4.

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

Бейсик

CONST N AS INTEGER = 20
 DIM A (1 TO N) AS INTEGER
 DIM I AS INTEGER,
       J AS INTEGER,
       K AS INTEGER
 
 FOR I = 1 TO N
INPUT A(I)
 NEXT I
 ...
 END

Python

# до­пус­ка­ет­ся также
# ис­поль­зо­вать две
# це­ло­чис­лен­ные пе­ре­мен­ные j и k
a = []
n = 20
for i in range(0, n):
    a.append(int(input()))
...

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

алг
 нач
    цел N = 20
    цел­таб a[1:N]
    цел i, j, k
    нц для i от 1 до N
        ввод a[i]
    кц
    ...
 кон

Паскаль

const
    N = 20;
 var
    a: array [1..N] of integer;
    i, j, k: integer;
 begin
    for i := 1 to N do
        readln(a[i]);
    ...
 end.

Си

#include <stdio.h>
 #define N 20
 int main() {
    int a[N];
    int i, j, k;
    for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
    ...
    return 0;
 }

Естественный язык

Объ­яв­ля­ем мас­сив A из 20 эле­мен­тов.
Объ­яв­ля­ем це­ло­чис­лен­ные пе­ре­мен­ные I, J, K.
В цикле от 1 до 20 вво­дим эле­мен­ты мас­си­ва A с 1-го по 20-й.
…

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


ЕГЭ 16.06.2016 по информатике. Основная волна. Вариант 41 (Часть С)

Дан мас­сив из 2000 эле­мен­тов. Хо­ро­шей парой на­зы­ва­ет­ся пара эле­мен­тов, из ко­то­рых оба окан­чи­ва­ют­ся на 9, при этом эле­мен­ты яв­ля­ют­ся со­се­дя­ми. По­счи­тай­те ко­ли­че­ство хо­ро­ших пар. Каж­дый эле­мент по мо­ду­лю не пре­вы­ша­ет 30 000. В от­ве­те ука­жи­те кусок про­грам­мы на месте мно­го­то­чия. Раз­ре­ше­но не ис­поль­зо­вать не­ко­то­рые из ини­ци­а­ли­зи­ро­ван­ных пе­ре­мен­ных, но за­пре­ще­но поль­зо­вать­ся пе­ре­мен­ны­ми, не ука­зан­ны­ми ниже.

const
N = 2000;
var i,j,k: integer;
   a:array[1..N] of integer;
begin
for i:=1 to N do
   readln(a[i]);
...
end.

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Для получения положительной оценки за тест требовалось набрать не менее 20 баллов. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный балл среди учащихся, получивших за тест положительную оценку. Известно, что в классе хотя бы один учащийся получил за тест положительную оценку. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

const N=30; 
var a: array [1..N] of integer; 
    i, j, min: integer; 
begin 
  for i:=1 to N do readln(a[i]); 
  ...
end.
Си

#include<stdio.h> 
int main(void) { 
  const int N=30; 
  int a[N]; 
  int  i, j, min; 
  for (i=0; i<N; i++)
   scanf(″%d″, &a[i]); 
  ...
}

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса, полученные на экзамене по информатике. Опишите на русском языке или на одном из языков программирования алгоритм, который позволяет найти и вывести количество учащихся, чьи баллы на экзамене выше среднего балла по классу. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

Паскаль

const N=30; 
var a: array [1..N] of integer; 
    i, j: integer; 
    s: real; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.
Си

#include<stdio.h>
 int main(void) {
    const int N=30; 
    int a[N]; 
    int  i, j; 
    float s; 
    for (i=0; i<N; i++)
     scanf(″%d″, &a[i]); 
  ...
}

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

Паскаль

const N=30; 
var a: array [1..N] of integer; 
    i, l, lmax, s, smax: integer; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.
Си

#include<stdio.h> 
int main(void) {
  const int N=30; 
  int a[N]; 
  int i, l, lmax, s, smax; 
  for (i=0; i<N; i++)
    scanf(″%d″, &a[i]); 
  ...
}

 

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

Паскаль

const N=30; 
var a: array [1..N] of integer; 
    i, j, min, min2, s: integer; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.

 

Си

#include<stdio.h> 
int main(void) { 
const int N=30; 
int a[N]; 
int    i, j, min, min2, s; 
for (i=0; i<N; i++)
  scanf(″%d″, &a[i]); 
  ...
}

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

Паскаль

const N=30; 
var a: array [1..N] of integer; 
    i, j, min, min2, s: integer; 
begin
  for i:=1 to N do readln(a[i]); 
  ...
end.
Си

#include<stdio.h> 
int main(void) {
const int N=30; 
int a[N]; 
int  i, j, min, min2, s; 
for (i=0; i<N; i++)
  scanf(″%d″, &a[i]); 
  ...
}

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

const N=30; 
var a: array [l..N] of integer;  
  i,j,k,imax,kmax: integer; 
begin
for i:=l to N do readln(a[i]); 
...
end.

 

#include<stdio.h> 
int main(void) { 
 const int N=30; 
 int a[N];  
 int i, j, k, imax, kmax; 
 for(i=0; i<N; i++)
  scanf(″%d″, &a[i]); 
...
}

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

const N=30; 
var a: array [1..N] of longint;   
    і, j, p: longint; 
begin
  for і := 1 to N do 
    readln(a[i]); 
  ...
end.

 

#include<stdio.h>
 int main(void) {
 const int N=30; 
 int a[N]; 
 int і, j, p; 
 for (i=0; i< N;  i++)
      scanf(″%d″, &a[i]); 
  ...
}