Задача к ЕГЭ по информатике на тему «парабола в координатах» №3

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

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

PIC

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

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

|---------|--------------|-----------|-----------|---------------------|---------------------------------| |О бласть |У слови е 1   |Услов ие 2 |Услов ие 3 |Пр ограм ма вы ведет |О бласт ь  |         |              |           |           |                     |                                 | |---------|(x-<=--y-∗-y)-|(x->=—0-)—|(y <=-1-)--|---------------------|---------------------------------| |A--------|--------------|-----------|-----------|---------------------|---------------------------------| |B--------|--------------|-----------|-----------|---------------------|---------------------------------| |C        |              |           |           |                     |                                 | |D--------|--------------|-----------|-----------|---------------------|---------------------------------| ----------------------------------------------------------------------------------------------------------

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

1)

|---------|--------------|-----------|-----------|---------------------|---------------------------------| |О бласть |У слови е 1   |Услов ие 2 |Услов ие 3 |Пр ограм ма вы ведет |О бласт ь  |         |(x <=  y ∗ y) |(x >=  0 )  |(y <= 1 )  |                     |                                 | |---------|--------------|-----------|-----------|---------------------|---------------------------------| |A--------|д-а-----------|да---------|да---------|прин-адлеж-ит--------|да-------------------------------| |B--------|д-а-----------|да---------|да---------|прин-адлеж-ит--------|нет------------------------------| |C--------|д-а-----------|нет--------|—----------|—--------------------|нет------------------------------| |D        |н ет          |—          |—          |—                    |нет                              | ----------------------------------------------------------------------------------------------------------

2)Возможная доработка:

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

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

Ответ: см. решение
Оцените статью
Я решу все!