Теория.
Прежде чем исправлять чужую программу постройте свою, чтобы было понятно, что не так с исходной.
Определить принадлежность точки с координатами х,у в заштрихованную область.
Уравнение параболы y=ax2+bx+c
Парабола проходит через три точки (-0.5, 0), (0, 1), (0.5, 0), поэтому мы можем найти коэффициенты a,b,c по формулам:
a=-4
b=0
c=1
Получаем уравнения для данной параболы:
y=-4x2+1
По рисунку можно заметить, что не все области нам нужны. При у>=0 нужна только та часть, где x<=0, поэтому необходимо ограничить условием не только y, но и х. При y<=0 x должен быть на оборот больше 0. Получаем два условия:
((y<=-4x2+1)&(у>=0))&(x<=0)
((y<=-4x2+1)&(y<=0))&(x>=0)
Для того, чтобы точка входила в выделенную область нам достаточно выполнения хотя бы одного условия, поэтому логическая связка будет «или»:
(((y<=-4x2+1)&(у>=0))&(x<=0)) ˅ (((y<=-4x2+1)&(y<=0))&(x>=0))
Программа:
var
x,y:real;
begin
writeln ('введите x и y');
readln (x,y);
if (((y<=-4*x*x+1) and (y>=0)) and (x<=0))
or (((y<=-4*x*x+1)and (y<=0))and (x>=0))
then write ('принадлежит') else write ('не принадлежит');
end.
Результат
Пример задания.
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.var х,у: real;
begin
readln(х,у);
if у <= -х*х then
if у <= 0 then
if у >= -х - 2 then
write(1 принадлежит') ;
else
write(1 не принадлежит 1) ;
end.
Последовательно выполните следующее:
1. Приведите пример таких чисел х, у при которых программа работает неправильно.
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).