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

8. Анализ простейших программ

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

Арифметическая прогрессия

Задание 1 #10177

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{|l|l|l|} \hline \text{C++} & \text{Python} & \text{Pascal}\\ \hline \# \text{include <iostream>} & s=0 & \text{var $k, s$: integer;}\\ \text{using namespace std;} & k=0 & \text{begin}\\ \text{int main() \{} & \text{while $k$ < $15$} & \quad s:=0;\\ \text{int $s$, $k$;} & \quad k=k+3 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \text{while $k < 15$ do begin}\\ \text{while ($k < 15$) \{} & \text{print($s$)} & \quad \quad k:=k+3;\\ k=k+3;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad \text{end;}\\ \text{\}}& & \quad \text{write($s$);}\\ \text{cout $<<$ $s$ $<<$ endl;}& & end.\\ \text{return 0;}&&\\ \text{\}}&&\\ \hline \end{array}\]

Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+3=3&0+3=3\\ 3+3=6&3+6=9\\ 6+3=9&9+9=18\\ 9+3=12&18+12=30\\ 12+3=15&30+15=45\\ \hline \end{array}\] Так как на следующем шаге \(k=15+3=18\), условие цикла \(while(k<15)\) не выполняется, значит, последнее значение \(s=45\), именно его и выведет на экран программа.

Ответ: 45

Задание 2 #12498

Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while k < 15} & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+3 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while k < 15 do begin}\\ \textit{while (k < 15) \{} & print(s) & \quad \quad k:=k+3;\\ k=k+3;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+3=3&0+3=3\\ 3+3=6&3+6=9\\ 6+3=9&9+9=18\\ 9+3=12&18+12=30\\ 12+3=15&30+15=45\\ \hline \end{array}\] Так как на следующем шаге \(k=15+3=18\), условие цикла \(while(k<15)\) не выполняется, значит, последнее значение \(s=45\), именно его и выведет на экран программа.

 

Ответ: 45

Задание 3 #12499


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s < }20 & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+2 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while s < 20 do begin}\\ \textit{while (s < 20) \{} & print(k) & \quad \quad k:=k+2;\\ k=k+2;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+2=2&0+2=2\\ 2+2=4&2+4=6\\ 4+2=6&6+6=12\\ 6+2=8&12+8=20\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<20)\) не выполняется, значит, последнее значение \(k=8\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) — сумма \(n\)-ого количества членов арифметической прогрессии, где \(k\) — разность (шаг) прогрессии. Поскольку цикл \(while(s<20)\) выполняется до тех пор, пока истинно \(s<20\), именно переменная \(s\) определяет количество повторов цикла или же \(n\). Найдем \(n\): для этого подставим в формулу арифметической прогрессии уже известные нам данные:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[\frac{2\cdot2+(n-1)\cdot2}{2}\cdot n<20\] \[n^2+n-20<0\] \[D=1^2-4\cdot(-20)=81; \sqrt D=9\]
\[\left[ \begin{gathered} n=\frac{-1+9}{2}=4 \hfill \\ n=\frac{-1-9}{2}=-5<0, \text{количество шагов не может быть отрицательным}\\ \end{gathered} \right.\] Т.к. количество шагов 4, значит, \(k=0+4\cdot2=8\).

Ответ: 8

Задание 4 #12500


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=5 & begin\\ \textit{int main() \{} & \textit{while k <= $20$} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=5;\\ s=0;k=5; & \quad k=k+2 & \quad \textit{while k <= $20$ do begin}\\ \textit{while (k <= $20$) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k+2;\\ k=k+2;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&5\\ 5&7\\ 12&9\\ 21&11\\ 32&13\\ 45&15\\ 60&17\\ 77&19\\ 96&21\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=20)\) не выполняется, значит, последнее значение \(s=96\), именно его и выведет на экран программа.
Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) - сумма n-ого количества членов арифметической прогрессии, где \(k\) - разность(шаг) прогрессии. Поскольку цикл \(while(k<=20)\) выполняется до тех пор, пока истинно \(k<=20\), именно переменная \(k\) определяет количество повторов цикла или же \(n\). Найдем \(n: (20-5):2=7,5\). Т.к. \(n\) натуральное число, округляем в бóльшую сторону: \(n=8\). Теперь подставим известные данные в формулу суммы n членов арифметической прогрессии:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[s=\frac{2\cdot5+(8-1)\cdot2}{2}\cdot8=96\]

Ответ: 96

Задание 5 #12501


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=3 & begin\\ \textit{int main() \{} & \textit{while k <= 15} & \quad s:=0;\\ \textit{int s, k;} & \quad s=s+k & \quad k:=3;\\ s=0;k=3; & \quad k=k+4 & \quad \textit{while k <= 15 do begin}\\ \textit{while (k <= 15) \{} & print(s) & \quad \quad s:=s+k;\\ s=s+k;& & \quad \quad k:=k+4;\\ k=k+4;& & \quad end;\\ \textit{\}}& & \quad write(s);\\ \textit{cout $<<$ s $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Первый способ решения
Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline s & k\\ \hline 0&3\\ 3&7\\ 10&11\\ 21&15\\ 36&19\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(k<=15)\) не выполняется, значит, последнее значение \(s=36\), именно его и выведет на экран программа.

Второй способ решения
Т.к. \(k\) каждый раз увеличивается на одно и тоже значение, а \(s\) суммирует эти значения, можно сказать, что \(s\) - сумма n-ого количества членов арифметической прогрессии, где \(k\) - разность(шаг) прогрессии. Поскольку цикл \(while(k<=15)\) выполняется до тех пор, пока истинно \(k<=15\), именно переменная \(k\) определяет количество повторов цикла или же \(n\). Найдем \(n:\\ 3+4\cdot n > 15\)
\(n>=4\)
Теперь подставим известные данные в формулу суммы n членов арифметической прогрессии:
\[s=\frac{2a_1+(n-1)k}{2}n\]
\[s=\frac{2\cdot3+(4-1)\cdot4}{2}\cdot4=36\]

Ответ: 36

Задание 6 #12502


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=0 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s <= 100} & \quad s:=0;\\ \textit{int s, k;} & \quad k=k+5 & \quad k:=0;\\ s=0;k=0; & \quad s=s+k & \quad \textit{while s <= 100 do begin}\\ \textit{while (s <= 100) \{} & print(k) & \quad \quad k:=k+5;\\ k=k+5;& & \quad \quad s:=s+k;\\ s=s+k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&0\\ 0+5=5&0+5=5\\ 5+5=10&5+10=15\\ 10+5=15&15+15=30\\ 15+5=20&30+20=50\\ 20+5=25&50+25=75\\ 25+5=30&75+30=105\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s<=100)\) не выполняется, значит, последнее значение \(k=30\), именно его и выведет на экран программа.

 

Ответ: 30

Задание 7 #12503


Определите, что будет напечатано в результате работы следующего фрагмента программы:
\[\begin{array}{| l | l | l |} \hline \textbf{C++} & \textbf{Python} & \textbf{Pascal}\\ \hline \textit{\#include <iostream>} & s=100 & \textit{var k, s: integer;}\\ \textit{using namespace std;} & k=0 & begin\\ \textit{int main() \{} & \textit{while s >= 50} & \quad s:=100;\\ \textit{int s, k;} & \quad k=k+1 & \quad k:=0;\\ s=100;k=0; & \quad s=s-k & \quad \textit{while s >= 50 do begin}\\ \textit{while (s >= 50) \{} & print(k) & \quad \quad k:=k+1;\\ k=k+1;& & \quad \quad s:=s-k;\\ s=s-k;& & \quad end;\\ \textit{\}}& & \quad write(k);\\ \textit{cout $<<$ k $<<$ endl;}& & end.\\ \textit{return 0;}&&\\ \textit{\}}&&\\ \hline \end{array}\]


Вручную просчитаем все действия программы, для удобства отобразим это с помощью таблицы:
\[\begin{array}{|c|c|} \hline k & s\\ \hline 0&100\\ 1&99\\ 2&97\\ 3&94\\ 4&90\\ 5&85\\ 6&79\\ 7&72\\ 8&64\\ 9&55\\ 10&45\\ \hline \end{array}\] Так как на следующем шаге условие цикла \(while(s>=50)\) не выполняется, значит, последнее значение \(k=10\), именно его и выведет на экран программа.

 

Ответ: 10