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

Парабола в координатах

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела (Старый формат ЕГЭ) 24. Программирование – исправление ошибки:

Это старая версия каталога задач

Нажмите для перехода на новую версию

Решаем задачи
Задание 1 #12690

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y<=x+1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y<=-x+2:}&\text{int main(void)\{}&\text{if y<=x+1 then}\\ \quad\quad\text{if y>=x*x-1:}&\text{float x,y;}&\quad\text{if y<=-x+2 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y>=x*x-1 then}\\ \quad\quad\text{else:}&\text{if (y<=x+1)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y<=-x+2)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y>=x*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(y<=x+1)&\text(y<=-x+2)&\text(y>=x*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(y<=x+1)&\text(y<=-x+2)&\text(y>=x*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 y>=x*x-1 and (y<=x+1 or y<=-x+2):}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y>=x*x-1) and ((y<=x+1) or (y<=-x+2)) 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-1 \&\& (y<=x+1 || y<=-x+2))}&\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 #12691

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y<=2*x*x-1:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x>=-1:}&\text{int main(void)\{}&\text{if y<=2*x*x-1 then}\\ \quad\quad\text{if y>=0:}&\text{float x,y;}&\quad\text{if x>=-1 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y>=0 then}\\ \quad\quad\text{else:}&\text{if (y<=2*x*x-1)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (x>=-1)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y>=0)}&\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, E, F).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите “да”, если условие выполнится, “нет”, если условие не выполнится, “—” (прочерк), если условие не будет проверяться, “не изв.”, если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце “Программа выведет” укажите, что программа выведет на экран. Если программа ничего не выводит, напишите “—” (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите “не изв”. В последнем столбце укажите “да” или “нет”.

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

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

Показать решение

1)
\[\begin{array}{|l|l|l|l|l|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(y<=2*x*x-1)&\text(x>=-1)&\text(y>=0)&&\\ \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 \text{E}&\text{да}&\text{да}&\text{нет}&\text{не принадлежит}&\text{да}\\ \hline \text{F}&\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<=2*x*x-1 and x>=-1 and y>=0 and x<0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y<=2*x*x-1) and (x>=-1) and (y>=0) 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 (y<=2*x*x-1 \&\& x>=-1 \&\& y>=0 \&\& 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{\}}&\\ \hline \end{array}\]

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

Ответ: см. решение
Задание 3 #12692

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y<=x+3:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y<=-x+3:}&\text{int main(void)\{}&\text{if y<=x+3 then}\\ \quad\quad\text{if y>=x*x+1:}&\text{float x,y;}&\quad\text{if y<=-x+3 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y>=x*x+1 then}\\ \quad\quad\text{else:}&\text{if (y<=x+3)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y<=-x+3)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y>=x*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(y<=x+3)&\text(y<=-x+3)&\text(y>=x*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(y<=x+3)&\text(y<=-x+3)&\text(y>=x*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 y>=x*x+1 and (y<=x+3 or y<=-x+3):}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y>=x*x+1) and ((y<=x+3) or (y<=-x+3)) 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+1 \&\& (y<=x+3 || y<=-x+3))}&\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 #12693

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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<=y*y:}&\text{}&\text{readln(x,y);}\\ \quad\text{if x>=0:}&\text{int main(void)\{}&\text{if x<=y*y then}\\ \quad\quad\text{if y<=1:}&\text{float x,y;}&\quad\text{if x>=0 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=1 then}\\ \quad\quad\text{else:}&\text{if (x<=y*y)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (x>=0)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=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<=y*y)&\text(x>=0)&\text(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|l|} \hline \text{Область} & \text{Условие 1}&\text{Условие 2}&\text{Условие 3}&\text{Программа выведет}&\text{Область обрабатывается верно}\\ &\text(x<=y*y)&\text(x>=0)&\text(y<=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<=y*y and x>=0 and y<=1 and y>=0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (x<=y*y) and (x>=0) and (y<=1) 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<=y*y \&\& x>=0 \&\& y<=1 \&\& 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}\]

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

Ответ: см. решение
Задание 5 #12694

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y>=x*x:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y<=-2x+2:}&\text{int main(void)\{}&\text{if y>=x*x then}\\ \quad\quad\text{if y>=0:}&\text{float x,y;}&\quad\text{if y<=-2x+2 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y>=0 then}\\ \quad\quad\text{else:}&\text{if (y>=x*x)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y<=-2x+2)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y>=0)}&\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(y>=x*x)&\text(y<=-2x+2)&\text(y>=0)&&\\ \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(y>=x*x)&\text(y<=-2x+2)&\text(y>=0)&&\\ \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<=-2x+2 and (y>=x*x or x>=0 and y>=0):}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y<=-2x+2) and ((y>=x*x) or (x>=0) 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 (y<=-2x+2 \&\& (y>=x*x || x>=0 \&\& 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}\]

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

Ответ: см. решение
Задание 6 #12695

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y>=0:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y<=-x+1:}&\text{int main(void)\{}&\text{if y>=0 then}\\ \quad\quad\text{if y>=x*x:}&\text{float x,y;}&\quad\text{if y<=-x+1 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y>=x*x then}\\ \quad\quad\text{else:}&\text{if (y>=0)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y<=-x+1)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y>=x*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(y>=0)&\text(y<=-x+1)&\text(y>=x*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(y>=0)&\text(y<=-x+1)&\text(y>=x*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*x and y<=-x+1 or y>=-x+1 and y<=x*x and x<0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y>=x*x) and (y<=-x+1) or (y>=-x+1) and (y<=x*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 (y>=x*x \&\& y<=-x+1 || y>=-x+1 \&\& y<=x*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}\]

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

Ответ: см. решение
Задание 7 #12696

Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (\(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 y>=-x*x:}&\text{}&\text{readln(x,y);}\\ \quad\text{if y>=-x-2:}&\text{int main(void)\{}&\text{if y>=-x*x then}\\ \quad\quad\text{if y<=0:}&\text{float x,y;}&\quad\text{if y>=-x-2 then}\\ \quad\quad\quad\text{print("принадлежит")}&\text{cin}>>\text{x}>>\text{y;}&\quad\quad\text{if y<=0 then}\\ \quad\quad\text{else:}&\text{if (y>=-x*x)}&\quad\quad\quad\text{write('принадлежит')}\\ \quad\quad\quad\text{print("не принадлежит")}&\quad\text{if (y>=-x-2)}&\quad\quad\text{else}\\ \text{}&\quad\quad\text{if (y<=0)}&\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(y>=-x*x)&\text(y>=-x-2)&\text(y<=0)&&\\ \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(y>=-x*x)&\text(y>=-x-2)&\text(y<=0)&&\\ \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*x and y>=-x-2 and y<=0 and x<=0:}&\text{}&\text{readln(x,y);}\\ \quad\text{print("принадлежит")}&\text{int main(void)\{}&\text{if (y>=-x*x) and (y>=-x-2) and (y<=0) 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 (y>=-x*x \&\& y>=-x-2 \&\& y<=0 \&\& 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}\]

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

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

1

Рулетка
Вы можете получить скидку в рулетке!