Задача к ЕГЭ по информатике на тему «окружность в координатах» №4

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

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

PIC

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

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

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

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

1)

|---------|---------------------|--------------------|-----------|----------------------|---------------------------------| |О бласть |У слови е 1          |Усл овие 2          |У слови е 3|П ро грамм а вы ведет |О бласт |         |(x ∗ x + y ∗ y <= 9) |(x ∗ x + y ∗ y <= 1 )|(y <= x ) |                      |                                 | |---------|---------------------|--------------------|-----------|----------------------|---------------------------------| |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 y<=x  and (x*x+y*y <=1   or x*x+y*y <=9   and x*x+y*y  >=4 ): |                                                                 |readln (x,y );                                                                | |  print("при надлеж и т")                                        |int main (void){                                                  |if (y<=x ) and ((x*x+y*y  <=1  ) or (x*x+y*y <=9 ) and (x*x+y*y  >=4 &# |else:                                                             |float x,y;                                                        |  write(’п ринад леж ит’)                                                   | |  print("не при надлеж и т")                                     |cin > > x > > y;                                                  |else                                                                        | |                                                                 |                                                                 |                                                                           | |                                                                 |if (y<=x  & & (x*x+y*y  <=1  ||x*x+y*y  <=9  & &  x*x+y*y >=4  )) |  write(’н е п ринад леж ит’)                                               | |                                                                 |  cout < < "пр инадл ежи т";                                     |end.                                                                       | |                                                                 |else                                                              |                                                                           | |                                                                 |  cout < < "не пр инадл ежи т";                                  |                                                                           | |                                                                 |                                                                 |                                                                           | -------------------------------------------------------------------}---------------------------------------------------------------------------------------------------------------------------------------------

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

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