Математика ЕГЭ
Русский язык ЕГЭ
Математика 5-7
Математика ОГЭ
Информатика
Физика
Обществознание
Кликните, чтобы открыть меню

19. Массивы в программировании

1. Вспоминай формулы по каждой теме
2. Решай новые задачи каждый день
3. Вдумчиво разбирай решения

Перемена мест элементов массива

Задание 1 #11075

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline s=0; & s=0 & s:=0;\\ \textit{for($i=0$; $i<=9$; $i++$) }\{ & \textit{for i in range $(10)$:} & \textit{for $i=0$ to $9$ do} \\ \quad \textit{if $(A[i]>A[i+1])$ }\{ & \quad \textit{if $A[i]>A[i+1]:$} & \quad \textit{if $A[i]>A[i+1]$ then}\\ \quad \quad s=s+1; & \quad \quad s=s+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad s=s+1; \\ \quad \quad A[i]=A[i+1]; & \quad \quad A[i]=A[i+1] & \quad \quad \quad \text{$t:=A[i]$;}\\ \quad \quad A[i+1]=t; \text{\}} & \quad \quad A[i+1]=t & \quad \quad \quad \text{$A[i]:=A[i+1]$;}\\ \quad \} && \quad \quad \quad \text{$A[i+1]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

Первый способ решения

С помощью цикла сравниваются текущее значение элемента \(A[i]\) и со следующим элементом \(A[i+1]\). Если \(A[i]>A[i+1]\), то значение переменной \(s\) увеличивается на 1, а элементы массива меняются местами. Пошагово распишем работу программы: \(A=\{7, 3, 2, -1, 6, 1, 0, 4, 8, 5\}\); \(s=0\)

\(7>3\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 7, 2, -1, 6, 1, 0, 4, 8, 5\}\); \(s=1\)

\(7>2\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, 7, -1, 6, 1, 0, 4, 8, 5\}\); \(s=2\)

\(7>(-1)\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, -1, 7, 6, 1, 0, 4, 8, 5\}\); \(s=3\)

\(7>6\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, -1, 6, 7, 1, 0, 4, 8, 5\}\); \(s=4\)

\(7>1\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, -1, 6, 1, 7, 0, 4, 8, 5\}\); \(s=5\)

\(7>0\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, -1, 6, 1, 0, 7, 4, 8, 5\}\); \(s=6\)

\(7>4\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{3, 2, -1, 6, 1, 0, 4, 7, 8, 5\}\); \(s=7\)

\(7<8\), не увеличиваем значение \(s\), массив остается без изменений. Рассмотрим последнюю пару: \(8>5\), увеличиваем \(s\), получаем ответ \(s=8\).

Второй способ решения

Можем заметить, что 7 — самое старшее значение в массиве до предпоследнего элемента. Значит, до \(A[8]\) каждый раз будет увеличиваться значение \(s\) и элементы будут меняться местами. От \(A[0]\) до \(A[7]\) находится 7 пар, каждая даст +1 к значению \(s\), таким образом получаем, что на предпоследнем шаге решение будет выглядеть: \(A=\{3, 2, -1, 6, 1, 0, 4, 7, 8, 5\}\); \(s=7\). Т.к. \(7<8\), не увеличиваем значение \(s\), массив остается без изменений. Рассмотрим последнюю пару: \(8>5\), увеличиваем \(s\), получаем ответ \(s=8\).

Ответ: 8

Задание 2 #11076

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline s=0; & s=0 & s:=0;\\ \textit{for($i=0$; $i<9$; $i++$) }\{ & \textit{for i in range $(9)$:} & \textit{for $i=0$ to $8$ do} \\ \quad \textit{if $(A[i]>A[i+1])$ }\{ & \quad \textit{if $A[i]>A[i+1]:$} & \quad \textit{if $A[i]>A[i+1]$ then}\\ \quad \quad s=s+1; & \quad \quad s=s+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad s=s+1; \\ \quad \quad A[i]=A[i+1]; & \quad \quad A[i]=A[i+1] & \quad \quad \quad \text{$t:=A[i]$;}\\ \quad \quad A[i+1]=t; \text{\}} & \quad \quad A[i+1]=t & \quad \quad \quad \text{$A[i]:=A[i+1]$;}\\ \quad \} && \quad \quad \quad \text{$A[i+1]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

Первый способ решения

С помощью цикла сравниваются текущее значение элемента \(A[i]\) и со следующим элементом \(A[i+1]\). Если \(A[i]>A[i+1]\), то значение переменной \(s\) увеличивается на 1, а элементы массива меняются местами. Пошагово распишем работу программы: \(A=\{6, 2, 1, -2, 5, 0, -1, 3, 7, 4\}\); \(s=0\)

\(6>2\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 6, 1, -2, 5, 0, -1, 3, 7, 4\}\); \(s=1\)

\(6>1\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, 6, -2, 5, 0, -1, 3, 7, 4\}\); \(s=2\)

\(6>(-2)\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, -2, 6, 5, 0, -1, 3, 7, 4\}\); \(s=3\)

\(6>5\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, -2, 5, 6, 0, -1, 3, 7, 4\}\); \(s=4\)

\(6>0\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, -2, 5, 0, 6, -1, 3, 7, 4\}\); \(s=5\)

\(6>(-1)\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, -2, 5, 0, -1, 6, 3, 7, 4\}\); \(s=6\)

\(6>3\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{2, 1, -2, 5, 0, -1, 3, 6, 7, 4\}\); \(s=7\)

\(6<7\), не увеличиваем значение \(s\), массив остается без изменений. Рассмотрим последнюю пару: \(7>4\), увеличиваем \(s\), получаем ответ \(s=8\).

Второй способ решения

Можем заметить, что 6 — самое старшее значение в массиве до предпоследнего элемента. Значит, до \(A[8]\) каждый раз будет увеличиваться значение \(s\) и элементы будут меняться местами. От \(A[0]\) до \(A[7]\) находится 7 пар, каждая даст +1 к значению \(s\), таким образом получаем, что на предпоследнем шаге решение будет выглядеть: \(A=\{2, 1, -2, 5, 0, -1, 3, 6, 7, 4\}\); \(s=7\). Т.к. \(6<7\), не увеличиваем значение \(s\), массив остается без изменений. Рассмотрим последнюю пару: \(7>4\), увеличиваем \(s\), получаем ответ \(s=8\).

Ответ: 8

Задание 3 #11077

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline c=0; & c=0 & c:=0;\\ \textit{for($i=1$; $i<=9$; $i++$) }\{ & \textit{for i in range $(1,10)$:} & \textit{for $i=1$ to $9$ do} \\ \quad \textit{if $(A[i-1]>=A[i])$ }\{ & \quad \textit{if $A[i-1]>=A[i]:$} & \quad \textit{if $A[i-1]>=A[i]$ then}\\ \quad \quad \text{$c++$}; & \quad \quad c=c+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad c:=c+1; \\ \quad \quad A[i]=A[i-1]; & \quad \quad A[i]=A[i-1] & \quad \quad \quad \text{$t:=A[i]$;}\\ \quad \quad A[i-1]=t; \text{\}} & \quad \quad A[i-1]=t & \quad \quad \quad \text{$A[i]:=A[i-1]$;}\\ \quad \} && \quad \quad \quad \text{$A[i-1]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

С помощью цикла сравниваются текущее значение элемента \(A[i]\) и с предыдущим элементом \(A[i-1]\). Если \(A[i-1]>A[i]\), то значение переменной \(c\) увеличивается на 1, а элементы массива меняются местами. Пошагово распишем работу программы: \(A=\{2, 1, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=0\)

\(1\leq2\), значит, увеличиваем \(c\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=1\)

\(3>2\), значит, не увеличиваем \(c\) и не меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=1\)

\(3\leq3\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=2\)

\(4>3\), значит, не увеличиваем \(s\) и не меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=2\)

\(4\leq4\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=3\)

\(4\leq4\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 4, 2, 2, 8\}\); \(c=4\)

\(2\leq4\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 2, 4, 2, 8\}\); \(c=5\)

\(2\leq4\), значит, увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 2, 2, 4, 8\}\); \(c=6\)

\(8>4\), значит, не увеличиваем \(s\) и меняем элементы местами: \(A=\{1, 2, 3, 3, 4, 4, 2, 2, 4, 8\}\); \(c=6\).

Ответ: 6

Задание 4 #11078

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline c=0; & c=0 & c:=0;\\ \textit{for($i=1$; $i<10$; $i++$) }\{ & \textit{for i in range $(1,10)$:} & \textit{for $i=1$ to $9$ do} \\ \quad \textit{if $(A[i-1]>=A[i])$ }\{ & \quad \textit{if $A[i-1]>=A[i]:$} & \quad \textit{if $A[i-1]>=A[i]$ then}\\ \quad \quad \text{$c++$}; & \quad \quad c=c+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad c:=c+1; \\ \quad \quad A[i]=A[i-1]; & \quad \quad A[i]=A[i-1] & \quad \quad \quad \text{$t:=A[i]$;}\\ \quad \quad A[i-1]=t; \text{\}} & \quad \quad A[i-1]=t & \quad \quad \quad \text{$A[i]:=A[i-1]$;}\\ \quad \} && \quad \quad \quad \text{$A[i-1]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

С помощью цикла сравниваются текущее значение элемента \(A[i]\) и с предыдущим элементом \(A[i-1]\). Если \(A[i-1]>=A[i]\), то значение переменной \(c\) увеличивается на 1, а элементы массива меняются местами. Пошагово распишем работу программы: \(A=\{1, 0, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=0\)

\(1\geq0\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=1\)

\(1<2\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=1\)

\(2\geq2\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=2\)

\(2<3\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=2\)

\(3\geq3\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=3\)

\(3\geq3\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 3, 1, 1, 7\}\); \(c=4\)

\(3\geq1\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 1, 3, 1, 7\}\); \(c=5\)

\(3\geq1\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 1, 1, 3, 7\}\); \(c=6\)

\(3<7\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{0, 1, 2, 2, 3, 3, 1, 1, 3, 7\}\); \(c=6\)

Ответ: 6

Задание 5 #11079

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline c=0; & c=0 & c:=0;\\ \textit{for($i=0$; $i<10$; $i++$) }\{ & \textit{for i in range $(10)$:} & \textit{for $i=0$ to $9$ do} \\ \quad \textit{if $(A[i]<A[0])$ }\{ & \quad \textit{if $A[i]<A[0]:$} & \quad \textit{if $A[i]<A[0]$ then}\\ \quad \quad \text{$c++$}; & \quad \quad c=c+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad c:=c+1; \\ \quad \quad A[i]=A[0]; & \quad \quad A[i]=A[0] & \quad \quad \quad \text{$t:=A[i]$;} \\ \quad \quad A[0]=t; \text{\}} & \quad \quad A[0]=t & \quad \quad \quad \text{$A[i]:=A[0]$;} \\ \quad \} && \quad \quad \quad \text{$A[0]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

Цикл сравнивает каждый элемент массива, начиная с A[1]. Если A[i] меньше, чем A[0], то A[0] заменяется на A[i], A[i] заменяется A[0], а значение переменной \(c\) увеличивается на 1. Пошагово распишем работу программы: \(5>4\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{4; 5; 1; 6; 3; -1; 0; -2; 7; 2\}\); \(c=0\)

\(1<4\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{1; 5; 4; 6; 3; -1; 0; -2; 7; 2\}\); \(c=1\)

\(6>1\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{1; 5; 4; 6; 3; -1; 0; -2; 7; 2\}\); \(c=1\)

Следующий элемент, меньше A[0] — A[6]. Значит, когда цикл проверит элемент A[6], значение \(c\) увеличится и элементы поменяются местами: \(A=\{-1; 5; 4; 6; 3; 1; 0; -2; 7; 2\}\); \(c=2\).

Дальше проверяем A[8], т.к. \((-2)<(-1)\): \(A=\{-2; 5; 4; 6; 3; 1; 0; -1; 7; 2\}\); \(c=3\).

Заметим, что дальше нет элементов меньших, чем A[0], значит, \(c=3\).

Ответ: 3

Задание 6 #11080

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline c=0; & c=0 & c:=0;\\ \textit{for($i=0$; $i<10$; $i++$) }\{ & \textit{for i in range $(10)$:} & \textit{for $i=0$ to $9$ do} \\ \quad \textit{if $(A[i]<A[0])$ }\{ & \quad \textit{if $A[i]<A[0]:$} & \quad \textit{if $A[i]<A[0]$ then}\\ \quad \quad \text{$c++$}; & \quad \quad c=c+1 & \quad \quad begin\\ \quad \quad t=A[i]; & \quad \quad t=A[i] & \quad \quad \quad c:=c+1; \\ \quad \quad A[i]=A[0]; & \quad \quad A[i]=A[0] & \quad \quad \quad \text{$t:=A[i]$;} \\ \quad \quad A[0]=t; \text{\}} & \quad \quad A[0]=t & \quad \quad \quad \text{$A[i]:=A[0]$;} \\ \quad \} && \quad \quad \quad \text{$A[0]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

Цикл сравнивает каждый элемент массива, начиная с A[1]. Если A[i] меньше, чем A[0], то A[0] заменяется на A[i], A[i] заменяется A[0], а значение переменной \(c\) увеличивается на 1. Пошагово распишем работу программы: \(4>3\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{3; 4; 0; 5; 2; -2; -1; -3; 6; 1\}\); \(c=0\)

\(1<4\), значит, увеличиваем \(с\) и меняем элементы местами: \(A=\{0; 4; 3; 5; 2; -2; -1; -3; 6; 1\}\); \(c=1\)

\(6>1\), значит, не увеличиваем \(с\) и не меняем элементы местами: \(A=\{0; 4; 3; 5; 2; -2; -1; -3; 6; 1\}\); \(c=1\)

Следующий элемент, меньше A[0] — A[6]. Значит, когда цикл проверит элемент A[6], значение \(c\) увеличится и элементы поменяются местами: \(A=\{-2; 4; 3; 5; 2; 0; -1; -3; 6; 1\}\); \(c=2\)

Дальше проверяем A[8], т.к. \((-3)<(-2)\): \(A=\{-3; 4; 3; 5; 2; 0; -1; -2; 6; 1\}\); \(c=3\)

Заметим, что дальше нет элементов меньших, чем A[0], значит, \(c=3\).

Ответ: 3

Задание 7 #11081

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

\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline c=0; & c=0 & c:=0;\\ \textit{for($i=1$; $i<10$; $i++$) }\{ & \textit{for i in range $(1,10)$:} & \textit{for $i=1$ to $9$ do} \\ \quad \textit{if $(A[i]==A[0])$ }\{ & \quad \textit{if $A[i]==A[0]:$} & \quad \textit{if $A[i]=A[0]$ then}\\ \quad \quad \text{$c++$}; & \quad \quad c=c+1 & \quad \quad begin\\ \quad \quad t=A[i+1]; & \quad \quad t=A[i+1] & \quad \quad \quad c:=c+1; \\ \quad \quad A[i+1]=A[i]; & \quad \quad A[i+1]=A[i] & \quad \quad \quad \text{$t:=A[i+1]$;} \\ \quad \quad A[i]=t; \text{\}} & \quad \quad A[i]=t & \quad \quad \quad \text{$A[i+1]:=A[i]$;} \\ \quad \} && \quad \quad \quad \text{$A[i]:=t;$}\\ && \quad \quad end;\\ \hline \end{array}\]

Цикл проверяет каждый элемент массива на совпадение с A[0], затем этот элемент, который совпал, меняется местами со следующим. Значит, условие совпадения будет выполняться до конца цикла. Условие сопадения первый раз выполнится и будет выполняться до конца при \(i=4\), значит, значение \(c=6\).

Ответ: 6