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

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

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

PIC

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

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

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

1)

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

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

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