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

(Старый формат ЕГЭ) 24. Программирование – исправление ошибки

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

Окружность в координатах

Задание 1 #12697

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=9:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x>=-3:}&\text{int main(void)\{}&\text{if x*x+y*y>=9 then}\\ \quad\quad\text{if y<=-x:}&\text{float x,y;}&\quad\text{if x>=-3 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=-x then}\\ \quad\quad\text{else:}&\text{if (x*x+y*y>=9)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (x>=-3)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=-x)}&\quad\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\quad\text{else}&\text{}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=9)&\text(x>=-3)&\text(y<=-x)&&\\ \hline \text{A}&&&&&\\ \hline \text{B}&&&&&\\ \hline \text{C}&&&&&\\ \hline \text{D}&&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=9)&\text(x>=-3)&\text(y<=-x)&&\\ \hline \text{A}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \text{B}&\text{нет}&\text{—-}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{C}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{нет}\\ \hline \text{D}&\text{да}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=9 and x>=-3 and y<=-x and y>=0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x*x+y*y>=9) and (x>=-3) and (y<=-x) and (y>=0) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (x*x+y*y>=9 \&\& x>=-3 \&\& y<=-x \&\& y>=0)}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 2 #12698

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y<=9:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x*x+y*y<=1:}&\text{int main(void)\{}&\text{if x*x+y*y<=9 then}\\ \quad\quad\text{print("принадлежит")}&\text{float x,y;}&\quad\text{if x*x+y*y<=1 then}\\ \quad\text{else:}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{write('принадлежит')}\\ \quad\quad\text{print("не принадлежит")}&\text{if (x*x+y*y<=9)}&\quad\text{else}\\ \text{}&\quad\text{if (x*x+y*y<=1)}&\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\text{else}&\text{}\\ \text{}&\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\quad\quad\quad\text{}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y<=9)&\text(x*x+y*y<=1)&&\\ \hline \text{A}&&&&\\ \hline \text{B}&&&&\\ \hline \text{C}&&&&\\ \hline \text{D}&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y<=9)&\text(x*x+y*y<=1)&&\\ \hline \text{A}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \text{B}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \text{C}&\text{да}&\text{нет}&\text{не принадлежит}&\text{нет}\\ \hline \text{D}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y<=9 and x*x+y*y>=4 or x*x+y*y<=1:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x*x+y*y<=9) and (x*x+y*y>=4) or (x*x+y*y<=1) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (x*x+y*y<=9 \&\& x*x+y*y>=4 || x*x+y*y<=1)}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 3 #12699

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x*x+y*y>=9:}&\text{int main(void)\{}&\text{if x*x+y*y>=1 then}\\ \quad\quad\text{print("принадлежит")}&\text{float x,y;}&\quad\text{if x*x+y*y>=9 then}\\ \quad\text{else:}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{write('принадлежит')}\\ \quad\quad\text{print("не принадлежит")}&\text{if (x*x+y*y>=1)}&\quad\text{else}\\ \text{}&\quad\text{if (x*x+y*y>=9)}&\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\text{else}&\text{}\\ \text{}&\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\quad\quad\quad\text{}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(x*x+y*y>=9)&&\\ \hline \text{A}&&&&\\ \hline \text{B}&&&&\\ \hline \text{C}&&&&\\ \hline \text{D}&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(x*x+y*y>=9)&&\\ \hline \text{A}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{B}&\text{да}&\text{нет}&\text{не принадлежит}&\text{нет}\\ \hline \text{C}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \text{D}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=9 or x*x+y*y>=1 and x*x+y*y<=4:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x*x+y*y>=9) or (x*x+y*y>=1) and (x*x+y*y<=4) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (x*x+y*y>=9 || x*x+y*y>=1 \&\& x*x+y*y<=4)}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 4 #12700

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y>=-1:}&\text{int main(void)\{}&\text{if x*x+y*y>=1 then}\\ \quad\quad\text{if y<=x:}&\text{float x,y;}&\quad\text{if y>=-1 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=-x then}\\ \quad\quad\text{else:}&\text{if (x*x+y*y>=1)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y>=-1)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=x)}&\quad\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\quad\text{else}&\text{}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(y>=-1)&\text(y<=x)&&\\ \hline \text{A}&&&&&\\ \hline \text{B}&&&&&\\ \hline \text{C}&&&&&\\ \hline \text{D}&&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(y>=-1)&\text(y<=x)&&\\ \hline \text{A}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \text{B}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{нет}\\ \hline \text{C}&\text{нет}&\text{—-}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{D}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{нет}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=1 and y>=-1 and y<=x and x<0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x*x+y*y>=1) and (y>=-1) and (y<=x) and (x<0) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (x*x+y*y>=1 \&\& y>=-1 \&\& y<=x \&\& x<0)}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 5 #12701

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+(y-1)*(y-1)>=1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y>=0:}&\text{int main(void)\{}&\text{if x*x+(y-1)*(y-1)>=1 then}\\ \quad\quad\text{if y<=x+1:}&\text{float x,y;}&\quad\text{if y>=0 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=x+1 then}\\ \quad\quad\text{else:}&\text{if (x*x+(y-1)*(y-1)>=1)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y>=0)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=x+1)}&\quad\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\quad\text{else}&\text{}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+(y-1)*(y-1)>=1)&\text(y>=0)&\text(y<=x+1)&&\\ \hline \text{A}&&&&&\\ \hline \text{B}&&&&&\\ \hline \text{C}&&&&&\\ \hline \text{D}&&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+(y-1)*(y-1)>=1)&\text(y>=0)&\text(y<=x+1)&&\\ \hline \text{A}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \text{B}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{нет}\\ \hline \text{C}&\text{нет}&\text{—-}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{D}&\text{да}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+(y-1)*(y-1)>=1 and y>=0 and y<=x and x<0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x*x+(y-1)*(y-1)>=1) and (y>=0) and (y<=x) and (x<0) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (x*x+(y-1)*(y-1)>=1 \&\& y>=0 \&\& y<=x \&\& x<0)}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 6 #12702

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y<=9:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x*x+y*y<=1:}&\text{int main(void)\{}&\text{if x*x+y*y<=9 then}\\ \quad\quad\text{if y<=x:}&\text{float x,y;}&\quad\text{if x*x+y*y<=1 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=x then}\\ \quad\quad\text{else:}&\text{if (x*x+y*y<=9)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (x*x+y*y<=1)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=x)}&\quad\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\quad\text{else}&\text{}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y<=9)&\text(x*x+y*y<=1)&\text(y<=x)&&\\ \hline \text{A}&&&&&\\ \hline \text{B}&&&&&\\ \hline \text{C}&&&&&\\ \hline \text{D}&&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y<=9)&\text(x*x+y*y<=1)&\text(y<=x)&&\\ \hline \text{A}&\text{да}&\text{да}&\text{да}&\text{принадлежит}&\text{да}\\ \hline \text{B}&\text{да}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{C}&\text{да}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{D}&\text{нет}&\text{—-}&\text{—-}&\text{—-}&\text{нет}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if y<=x and (x*x+y*y<=1 or x*x+y*y<=9 and x*x+y*y>=4):}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y<=x) and((x*x+y*y<=1) or (x*x+y*y<=9) and (x*x+y*y>=4)) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (y<=x \&\& (x*x+y*y<=1 || x*x+y*y<=9 \&\& x*x+y*y>=4))}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение

Задание 7 #12703

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(x,\) \(y\) — действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if x*x+y*y>=1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x*x+y*y>=9:}&\text{int main(void)\{}&\text{if x*x+y*y>=1 then}\\ \quad\quad\text{if y<=-x:}&\text{float x,y;}&\quad\text{if x*x+y*y>=9 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=-x then}\\ \quad\quad\text{else:}&\text{if (x*x+y*y>=1)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (x*x+y*y>=9)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=-x)}&\quad\quad\quad\text{write('не принадлежит')}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\quad\quad\text{else}&\text{}\\ \text{}&\quad\quad\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

Последовательно выполните следующее:

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(x*x+y*y>=9)&\text(y<=-x)&&\\ \hline \text{A}&&&&&\\ \hline \text{B}&&&&&\\ \hline \text{C}&&&&&\\ \hline \text{D}&&&&&\\ \hline \end{array}\]

2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x*x+y*y>=1)&\text(x*x+y*y>=9)&\text(y<=-x)&&\\ \hline \text{A}&\text{нет}&\text{—-}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{B}&\text{да}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{C}&\text{да}&\text{нет}&\text{—-}&\text{—-}&\text{нет}\\ \hline \text{D}&\text{да}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \end{array}\]

2)Возможная доработка:
\[\begin{array}{|l|l|l|} \hline \text{Python} & \text{C++}&\text{Pascal}\\ \hline \text{x = float(input())}&\text{\#include <iostream>}&\text{var x,y: real;}\\ \text{y = float(input())}&\text{using namespace std;}&\text{begin}\\ \text{if y<=-x and (x*x+y*y>=9 or x*x+y*y>=1 and x*x+y*y<=4):}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y<=-x) and((x*x+y*y>=9) or (x*x+y*y>=1) and (x*x+y*y<=4)) then}\\ \text{else:}&\text{float x,y;}&\quad\text{write('принадлежит')}\\ \quad\text{print("не принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\text{else}\\ \text{}&\text{if (y<=-x \&\& (x*x+y*y>=9 || x*x+y*y>=1 \&\& x*x+y*y<=4))}&\quad\text{write('не принадлежит')}\\ \text{}&\quad\text{cout}<<\text{"принадлежит";}&\text{end.}\\ \text{}&\text{else}&\quad\quad\quad\text{}\\ \text{}&\quad\text{cout}<<\text{"не принадлежит";}&\text{}\\ \text{}&\text{\}}&\text{}\\ \hline \end{array}\]

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

Ответ: см. решение