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

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

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

PIC

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

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

|---------|-----------|----------------|-------------|----------------------|--------------------------------| |О бласть |У слови е 1|У слови е 2     |Усл овие 3   |П рогр амм а вывед ет |О бласть & |         |           |                |             |                      |                                | |---------|(y->=—0)—|(y-<=--−-x-+-1)-|(y->=—x-∗ x)|———————-|———————————| |A———|————|—————-|————-|———————-|———————————| |B———|————|—————-|————-|———————-|———————————| |C        |           |                |             |                      |                                | |D———|————|—————-|————-|———————-|———————————| ————————————————————————————————————— » class=»math-display» width=»auto»></center> </p>
<p class= 2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

1)

|---------|-----------|----------------|-------------|----------------------|--------------------------------| |О бласть |У слови е 1|У слови е 2     |Усл овие 3   |П рогр амм а вывед ет |О бласть & |         |(y >=  0)  |(y <=  − x + 1) |(y >=  x ∗ x)|                      |                                | |———|————|—————-|————-|———————-|———————————| |A———|д-а———|д-а————-|да————|п-ринад-леж-ит———|да——————————| |B———|д-а———|н-ет————|—————|————————|нет——————————| |C———|д-а———|н-ет————|—————|————————|нет——————————| |D        |д а        |д а             |нет          |н е п ринад леж ит    |да                              | ————————————————————————————————————— » class=»math-display» width=»auto»></center> </p>
<p class= 2)Возможная доработка:

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

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

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