Подготовка к ЕГЭ

19. Обработка массивов и матриц

одномерный целочисленный массив

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

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 2, 4, 3, 6, 3, 7, 8, 2, 9, 1 соответственно, т.е. A[0] = 2, A[1] = 4 и т.д.
Определите значение переменной c после выполнения следующего фрагмента этой программы, записанного ниже на пяти языках программирования

Бейсик

c = 0
FOR i = 1 TO 9
 IF A(i-1) < A(i) THEN
  c = c + 1
  t = A(i)
  A(i) = A(i-1)
  A(i-1) = t
 END IF
NEXT i

Python

c = 0
for i in range(1, 10):
    if A[i-1] < A[i]:
        c = c + 1
        A[i-1], A[i] = A[i], A[i-1]

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

c := 0
нц для i от 1 до 9
  если A[i-1] < A[i] то
    c := c + 1
    t := A[i]
    A[i] := A[i-1]
    A[i-1] := t
  все
кц

Паскаль

c := 0;
for i := 1 to 9 do
  if A[i-1] < A[i] then
  begin
    c := c + 1;
    t := A[i];
    A[i] := A[i-1];
    A[i-1] := t;
  end;

С++

c = 0;
for (int i = 1; i < 10; i++)
  if (A[i-1] < A[i]){
    c++;
    t = A[i];
    A[i] = A[i-1];
    A[i-1] = t;
  }

Решение:

2 4 3 6 3 7 8 2 9 1
4 2 c=1
3 2 c=2
6 2 c=3
3 2 c=4
7 2 c=5
8 2 c=6
9 2 c=7

Ответ: 7


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

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 3, 0, 4, 6, 5, 1, 8, 2, 9, 7 соответственно, т.е. A[0] = 3, A[1] = 0 и т.д. Определите значение переменной c после выполнения следующего фрагмента этой программы (записанного ниже на разных языках программирования).

Бейсик

c = 0
FOR i = 1 TO 9
  IF A(i-1) > A(i) THEN
   c = c + 1
   t = A(i)
   A(i) = A(i-1)
   A(i-1) = t
  END IF
NEXT i

Python

c = 0
for i in range(1,10):
  if A[i-1] > A[i]:
   c = c + 1
   t = A[i]
   A[i] = A[i-1]
   A[i-1] = t

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

c := 0
нц для i от 1 до 9
если A[i-1] > A[i] то
c := c + 1
t := A[i]
A[i] := A[i-1]
A[i-1] := t
все

Паскаль

c := 0;
for i := 1 to 9 do
  if A[i-1] > A[i] then
  begin
   c := c + 1;
   t := A[i];
   A[i] := A[i-1];
   A[i-1] := t;
  end;

С++

c = 0;
for (int i = 1; i < 10; i++)
  if (A[i-1] > A[i]){
   c++;
   t = A[i];
   A[i] = A[i-1];
   A[i-1] = t;
  }

Решение:

0 1 2 3 4 5 6 7 8 9
3 0 4 6 5 1 8 2 9 7 c=0
0 3 c=1
5 6 c=2
1 6 c=3
2 8 c=4
7 9 c=5

Ответ: 5


Одномерный целочисленный массив. В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно, т.е. A[0] = 1, A[1] = 2 и т.д. Определите значение переменной j после выполнения следующего фрагмента программы (записанного ниже на пяти зыках программирования).

Бейсик

j = 5
	WHILE A(j) < A(j-1)
	t = A(j)
	A(j) = A(j-1)
	A(j-1) = t
	j = j - 1
WEND

Python

j = 5
while A[j] < A[j-1]:
	A[j],A[j-1]=A[j-1],A[j]
	j -= 1

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

j := 5
нц пока A[j] < A[j-1]
	t := A[j]
	A[j] := A[j-1]
	A[j-1] := t
	j := j - 1
кц

Паскаль

j:= 5;
while A[j] < A[j-1] do
	begin
		t := A[j];
		A[j] := A[j-1];
		A[j-1] := t;
		j := j - 1;
	end;

Си

j = 5;
while (A[j] < A[j-1])
{
	t = A[j];
	A[j] = A[j-1];
	A[j-1] = t;
	j -= 1;
}

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

Решение:

Дан­ный ал­го­ритм ме­ня­ет ме­ста­ми эле­мен­ты с но­ме­ром j и j-1 до тех пор, пока эле­мент A[j] не ста­нет боль­ше либо равен эле­мен­ту A[j-1], при каж­дой такой пе­ре­ста­нов­ке j умень­ша­ет­ся на еди­ни­цу.

A[0]=1                      A[3]=8                A[6]=4            A[9]=6

A[1]=2                      A[4]=9                A[7]=0

A[2]=5                      A[5]=3                A[8]=7

Сна­ча­ла трой­ка (j=5, A[ j ]=A[5]=3) срав­ни­ва­ет­ся с де­вят­кой (A[ j-1 ]=A[4]=9), по­сколь­ку трой­ка мень­ше де­вят­ки они ме­ня­ют­ся ме­ста­ми (A[5]=9, A[4]=3), j=4. Ана­ло­гич­но трой­ка  (j=4, A[ j ]=A[4]=3) ме­ня­ет­ся ме­ста­ми с восьмёркой (A[3]=8), j=3 и пятёркой (A[2]=5), j=2. Затем трой­ка срав­ни­ва­ет­ся с двой­кой, по­сколь­ку трой­ка боль­ше двух ал­го­ритм за­вер­ша­ет ра­бо­ту. Всего было 3 за­хо­да в цикл, сле­до­ва­тель­но, после ис­пол­не­ния дан­но­го фраг­мен­та про­грам­мы j ста­нет рав­ным двум.

1 2 5 8 9 3 4 0 7 6 j = 5 3 < 9
3 9 j = 4 3 < 8
3 8 j = 3 3 < 5
3 5 j = 2 3 < 2

Ответ: 2


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

В про­грам­ме ис­поль­зу­ет­ся од­но­мер­ный це­ло­чис­лен­ный мас­сив A с ин­дек­са­ми от 0 до 9. Зна­че­ния эле­мен­тов равны 4, 7, 3, 8, 5, 0, 1, 2, 9, 6 со­от­вет­ствен­но, т.е. A[0] = 4, A[1] = 7 и т.д.

Опре­де­ли­те зна­че­ние пе­ре­мен­ной c после вы­пол­не­ния сле­ду­ю­ще­го фраг­мен­та этой про­грам­мы (за­пи­сан­но­го ниже на пяти язы­ках про­грам­ми­ро­ва­ния).

Бейсик

c = 0
 FOR i = 1 TO 9
    IF A(i) < A(0) THEN
        c = c + 1
        t = A(i)
        A(i) = A(0)
        A(0) = t
    ENDIF
 NEXT i

Python

c = 0
 for i in range(1,10):
    if A[i] < A[0]:
        c = c + 1
        t = A[i]
        A[i] = A[0]
        A[0] = t

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

c := 0
 нц для i от 1 до 9
    если A[i] < A[0] то
        c := c + 1
        t := A[i]
        A[i] := A[0]
        A[0] := t
    все
 кц

Паскаль

c := 0;
 for i := 1 to 9 do
    if A[i] < A[0] then
    begin
        c := c + 1;
        t := A[i];
        A[i] := A[0];
        A[0] := t;
    end;

Си

c = 0;
 for (i = 1;i < 10;i++)
    if (A[i] < A[0])
    {
        c++;
        t = A[i];
        A[i] = A[0];
        A[0] = t;
    }

Ответ:

Решение:

Дан­ный ал­го­ритм ме­ня­ет ме­ста­ми эле­мен­ты A[0] и А[ i ] и увеличивает значение c на 1, если   А[ i ]< A[0].

A[0]=4                       A[3]= 8               A[6]=1           A[9]=6

A[1]=7                       A[4]= 5               A[7]=2

A[2]=3                       A[5]=0                A[8]=9

Сна­ча­ла четверка (A[0]=4 ) срав­ни­ва­ет­ся с семеркой ( i=1,А[ i ]= A[1]=7),

7!<4

Дальше четверка (A[0]=4 ) срав­ни­ва­ет­ся с тройкой ( i=2,А[ i ]= A[2]=3),по­сколь­ку трой­ка мень­ше четверки они ме­ня­ют­ся ме­ста­ми (A[0]=3, A[2]=4), c=0+1=1.

Ана­ло­гич­но трой­ка сравнивается с A[3]= 8, A[4]= 5, A[5]=0 .

8!<3

5!<3

0<3  → 3 и 0 меняются местами (A[0]=0, A[5]=3), c=.1+1=2.

0-наименьшее число в массиве, c=2.

Ответ: 2


В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

Паскаль Си Python
for i:=0 to 10 do
A[i]:= i + 1;
for i:=10 downto 0 do
A[i]:= A[10-i];
 for (i = 0;i <= 10;i++)
A[i] = i+1;
for (i = 10;i >= 0;i—)
A[i] = A[10-i];
 for i in range(0,11):
A[i] = i+1
for i in range(10, -1, -1):
A[i] = A[10-i]

Чему будут равны элементы этого массива?

1) 10 9 8 7 6 5 4 3 2 1 0

2) 11 10 9 8 7 6 5 4 3 2 1

3) 11 10 9 8 7 6 7 8 9 10 11

4) 1 2 3 4 5 6 5 4 3 2 1

Решение:

0 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 1
1 2 3 4 5 6 7 8 9 2 1
1 2 3 4 5 6 7 8 3 2 1
1 2 3 4 5 6 7 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1

Ответ: 4


В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

Паскаль Си Python
for i:=0 to 10 do A[i]:=i;
for i:=0 to 10 do begin
A[10-i]:=A[i];
A[i]:=A[10-i];
end;
 for (i = 0;i <= 10;i++)
A[i] = i;
for (i = 0;i <= 10;i++){
A[10-i]=A[i];
A[i]=A[10-i];
}
 for i in range(0,11):
A[i] = i
for i in range(0,11):
A[10-i]=A[i]
A[i]=A[10-i]

Чему будут равны элементы этого массива?

1) 10 9 8 7 6 5 4 3 2 1 0

2) 0 1 2 3 4 5 6 7 8 9 10

3) 10 9 8 7 6 5 6 7 8 9 10

4) 0 1 2 3 4 5 4 3 2 1 0

Решение:

0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9 0
0 1 2 3 4 5 6 7 8 1 0
0 1 2 3 4 5 6 7 2 1 0
0 1 2 3 4 5 6 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0

Ответ: 4


В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

Паскаль Си Python
for i:=0 to 10 do A[i]:=i*i;
k:=A[10];
for i:=0 to 9 do
A[i]:=A[i+1];
A[0]:=k;
 for (i = 0;i <= 10;i++)
A[i]=i*i;
k:=A[10];
for (i = 0;i <= 9;i++){
A[i]=A[i+1];
A[0]=k;
}
 for i in range(0,11):
A[i]=i*i
k=A[10]
for i in range(0,10):
A[i]=A[i+1]
A[0]=k

Чему будут равны элементы этого массива?

1) 100 0 1 4 9 16 25 36 49 64 81

2) 100 4 9 16 25 36 49 64 81 100 100

3) 1 4 9 16 25 36 49 64 81 100 100

4) 1 4 9  16 36 49 64 81 100 0

Решение:

0 1 2 3 4 5 6 7 8 9 10
0 1 4 9 16 25 36 49 64 81 100 k=100
1
4
9
16
25
36
49
64
81
1 4 9 16 25 36 49 64 81 100 100
100 4 9 16 25 36 49 64 81 100 100 A[0]=100

Ответ: 2


Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:

Паскаль Си Python
for i:=1 to n do
A[i]:=i*i;
for i:=1 to n do
B[i]:=A[i]-100;
 for (i = 1;i <= n;i++)
A[i]=i*i;
for (i = 1;i <= n;i++){
B[i]=A[i]-100;
}
 for i in range(0,n+1):
A[i]=i*i
for i in range(0,n+1):
B[i]=A[i]-100

Сколько положительных значений будет в  массиве B?

Решение:

A 1 2 3 10 11 12 100
A 1 4 9 100 121 144 10000
B -99 -96 -91 0 21 44 9900 B[i]:=A[i]-100;

100-10=90

Ответ: 90


Значения элементов двумерного массива А были равны 0. Затем значения некоторых элементов были изменены (см. представленный фрагмент программы:

Паскаль Си Python
n := 0;
for i:=1 tо 5 do
for j:=1 tо 6-i do begin
n := n + 1;
A[i,j] := n;
end;
 n = 0;
for (i = 1;i <= 5;i++)
for (j = 1;j <= 6-i;j++){
n = n + 1;
A[i][j] = n;
}
 n = 0
for i in range(1,6):
for j in range(1,6-i+1):
n = n + 1
A[i][j] = n

Какой элемент массива будет иметь в результате максимальное значение?

1) A[1,1]              2) A[1,5]              3) A[5,1]              4) A[5,5]

Решение:

A[1,1]=1
A[1,2]=2
A[1,3]=3
A[1,4]=4
A[1,5]=5
A[2,1]=6
A[2,2]=7
A[2,3]=8
A[2,4]=9
A[3,1]=10
A[3,2]=11
A[3,3]=12
A[4,1]=13
A[4,2]=14
A[5,1]=15

Ответ: 3


В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

Паскаль Си Python
s:= 0;
n:= 10;
for i:=0 to n do begin
if і = n-i then s:=s+A[i]+A[i+1];
end;
s = 0;
n = 10;
for (i = 0;i <= n;i++)
if (і == n-i)
s=s+A[i]+A[i+1];
 s = 0
n = 10
for i in range(0,n+1):
if і == n-i:
s=s+A[i]+A[i+1];

В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, т. е. А[0]=0, А[1]=10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

Решение:

n:= 10;

if і = n-i then => і = 10-i = > i=5

s:=s+A[i]+A[i+1] = 0 + 50 + 60 = 110

Ответ: 110


В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

Паскаль Си Python
n:= 10; s:= 0;
for i:=1 to n do begin
if A[i]-A[i-1] < i then
s:= s + i;
end;
 n = 10; s = 0;
for (i = 1;i <= n;i++)
if (A[i]-A[i-1] < i)
s = s + i;
 n = 10
s = 0
for i in range(0,n+1):
if A[i]-A[i-1] < i:
s = s + i

В начале выполнения этого фрагмента в массиве находились числа Фибоначчи: 1,1,2,3,5,8,13,21,34,55,89, т.е. A[0]=1, A[1]=1, A[2]=2 и т.д. Чему будет равно значение переменной s после выполнения данной программы?

Решение:

0 1 2 3 4 5 6 7 8 9 10
1 1 2 3 5 8 13 21 34 55 89
i 1 2 3 4 5 6 7 8 9 10
A[i]-A[i-1] < i 1-1<1 2-1<2 3-2<3 5-3<4 8-5<5 13-8<6
s 0 1 3 6 10 15 21

Ответ: 21


В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

Паскаль Си Python
n := 10;
for i := 1 to n do begin
A[n+1-i] := 2*A[i];
end;
 n = 10
for (i = 1;i <= n;i++)
A[n+1-i] = 2*A[i];
 n = 10
for i in range(0,n+1):
A[n+1-i] = 2*A[i]

В начале выполнения этого фрагмента в массиве находились числа: 1,2,4,8,16,32,64,128,256,512, т.е. A[i]=2k-1, k=1, …10. Укажите значение из предложенного списка, которое после выполнения указанного фрагмента программы имеют два или более рассмотренных в этом фрагменте элемента массива. Если таких чисел несколько, укажите наименьшее из них.

Решение:

1 2 3 4 5 6 7 8 9 10
1 2 4 8 16 32 64 128 256 512 A[n+1-i] := 2*A[i]
2 A[10+1-1] := 2*1=A[10]=2
4 A[10+1-2] := 2*2=A[9]=4
8 A[10+1-3] := 2*4=A[8]=8
16 A[10+1-4] := 2*8=A[7]=16
32 A[10+1-5] := 2*16=A[6]=32
64 A[10+1-6] := 2*32=A[5]=64
32 A[10+1-7] := 2*16=A[4]=32
16 A[10+1-8] := 2*8=A[3]=16
8 A[10+1-9] := 2*4=A[2]=8
4 8 16 32 64 32 16 8 4 2 A[10+1-10] := 2*2=A[1]=4

Если таких чисел несколько, укажите наименьшее из них = 4

Ответ: 4


В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив:

Паскаль Си Python
s:=0;
n:=10;
for i:=0 to n-1 do begin
s:=s+A[i]-A[i+1]
end;
 s=0;
n=10;
for (i = 0;i <= n-1;i++)
s=s+A[i]-A[i+1];
 s=0
n=10
for i in range(0,n):
s=s+A[i]-A[i+1]

В начале выполнения этого фрагмента в массиве находились двухзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?

Решение:

0 1 2 3 4 5 6 7 8 9 10
99 10 10 10 10 10 10 10 10 10 10 s:=s+A[i]-A[i+1]

s=0+99-10=89

s=89+10-10=89…

Ответ: 89


В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 7; 5; 3; 4; 8; 8; 9; 7; 6; 2 соответственно, т.е. A[0] = 7; A[1] = 5 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы:

Паскаль Си Python
c := 0;
for i := 1 to 9 do
if A[i-1] < A[i] then begin
t:= A[i];
A[i]:= A[i — 1];
A[i-1]:= t
end
else
c:= c + 1;
 c = 0;
for (i = 1;i <= 9;i++)
if (A[i-1] < A[i]){
t = A[i];
A[i] = A[i — 1];
A[i-1] = t;
}else
c = c + 1;
 c = 0
for i in range(1,10):
if A[i-1] < A[i]:
t = A[i]
A[i] = A[i — 1]
A[i-1] = t
else:
c = c + 1

Решение:

if A[i-1] < A[i] then begin
t:= A[i];
A[i]:= A[i — 1];
A[i-1]:= t

Если текущее число больше предыдущего, это меняет местами. Если нет, c увеличивается.

0 1 2 3 4 5 6 7 8 9
7 5 3 4 8 8 9 7 6 2
7 5 c=1
5 3 c=2
4 3
8 3
8 3
9 3
7 3
6 3
3 2 c=3

Ответ: 3


Ниже представлен фрагмент программы, обрабатывающей одномерный целочисленный массив с индексами от 0 до 10. Известно, что в начале выполнения этого фрагмента в массиве находилась возрастающая последовательность чисел, то есть A[0] < A[1] < … < A[10]. Какое наибольшее значение может иметь переменная s после выполнения данной программы?

Паскаль Си Python
s := 27;
n := 10;
for i:=0 to n-1 do begin
s:=s+A[i]-A[i+1]+2
end;
 s = 27;
n = 10;
for (i = 0;i <= n-1;i++)
s=s+A[i]-A[i+1]+2;
 s = 27
n = 10
for i in range(0,n):
s=s+A[i]-A[i+1]+2

Решение:

0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9 10

s:=s+A[i]-A[i+1]+2

чтобы сделать с самым большим, то разница должна быть минимальной.

s=27+0-1+2=28

Это повторяется 10 раз.

27+10=37

Ответ: 37

Exit mobile version