
Andromadwyn
6 год назад
Даю 99 баллов.
Программа на Паскале:
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x,y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программа была написана неправильно.
var x,y: real;
begin readln(x,y);
if y< = 1 then
if x> = 0 then
if y> = +1 then
write('принадлежит')
else
write('не принадлежит')
end
(Точки с запятой и точки не стоят, я знаю).
При каком(-их) значении(-ях) х и у программа выполняется неправильно?
a. x = 0; y = -1;
b. x = 0; y = 1;
c. x = 1; y = 2;
d. x = 1,5; y = -10,5;

ОТВЕТЫ

Хрисанф
Jul 6, 2019
Для исключения области, отмеченной зелёной штриховкой, можно использовать ограничение ygt;=x (см. рис.)
var x,y: real;
begin readln(x,y);
if (xgt;=0)and(ylt;=1)and(ygt;=x)and(ygt;=-(x-1)*(x-1)+1) //(x-1)^2=-(y-1);
then write(принадлежит)
else write(не принадлежит)
end.
Пример 1:
0.25 0.75
принадлежит
Пример 2:
1 2
не принадлежит
var x,y: real;
begin readln(x,y);
if (xgt;=0)and(ylt;=1)and(ygt;=x)and(ygt;=-(x-1)*(x-1)+1) //(x-1)^2=-(y-1);
then write(принадлежит)
else write(не принадлежит)
end.
Пример 1:
0.25 0.75
принадлежит
Пример 2:
1 2
не принадлежит
Program point_in;
var
x, y: real;
function ParabolicY(x: real): real;
begin
ParabolicY := -1 * x * x + 2 * x;
end;
begin
readln(x, y);
if ( (x lt; 0) or (x gt; 1) ) or ( (y lt; 0) or (y gt; 1) ) then
writeln(не принадлежит)
else
begin
if ( ParabolicY(x) lt;= y ) and (y lt;= 1) then
writeln(принадлежит)
else
writeln(не принадлежит);
end;
end.
var
x, y: real;
function ParabolicY(x: real): real;
begin
ParabolicY := -1 * x * x + 2 * x;
end;
begin
readln(x, y);
if ( (x lt; 0) or (x gt; 1) ) or ( (y lt; 0) or (y gt; 1) ) then
writeln(не принадлежит)
else
begin
if ( ParabolicY(x) lt;= y ) and (y lt;= 1) then
writeln(принадлежит)
else
writeln(не принадлежит);
end;
end.
225