В Паскале (Pascal ABC) выдает ошибку "Нельзя преобразовать тип real к типу integer". как исправить? По заданию нужно написать программу, которая определяет, принадлежит ли точка с координатами (х,у) треугольнику с вершинами в точках с координатами (х1,у1), (х2,у2), (х3,у3). программа: program _1; var x,y,x1,y1,x2,y2,x3,y3:real; begin write('Введите координаты точки(х,у)'); read(x,y); write('Введите координаты первой вершины треугольника(х1,у1)'); read(x1,y1); write('Введите координаты второй вершины треугольника(х2,у2)'); read(x2,y2); write('Введите координаты третьей вершины треугольника(х3,у3)'); read(x3,y3); if ((x-x2)/(x2-x1)-(y-y2)/(y2-y1))<=0 and ((x-x3)/(x3-x2)-(y-y3)/(y3-y2))<=0 and ((x-x3)/(x3-x1)-(y-y3)/(y3-y1))>=0 then writeln('Точка с введенными вами координатами принадлежит треугольнику') else writeln('Точка с введенными вами координатами не принадлежит треугольнику'); end.
Ошибка "Нельзя преобразовать тип real к типу integer" возникает из-за того, что вы пытаетесь сравнивать значения типа real с помощью операции "<=" и ">=". Для исправления этой ошибки вам нужно преобразовать результаты вычислений к типу integer с помощью функции trunc() или round().
Вот исправленный код программы:
program _1; var x, y, x1, y1, x2, y2, x3, y3: real; begin write('Введите координаты точки(х,у)'); read(x, y);
write('Введите координаты первой вершины треугольника(х1,у1)'); read(x1, y1);
write('Введите координаты второй вершины треугольника(х2,у2)'); read(x2, y2);
write('Введите координаты третьей вершины треугольника(х3,у3)'); read(x3, y3);
if (trunc((x-x2)/(x2-x1)-(y-y2)/(y2-y1)) <= 0) and (trunc((x-x3)/(x3-x2)-(y-y3)/(y3-y2)) <= 0) and (trunc((x-x3)/(x3-x1)-(y-y3)/(y3-y1)) >= 0) then writeln('Точка с введенными вами координатами принадлежит треугольнику') else writeln('Точка с введенными вами координатами не принадлежит треугольнику'); end.
Ошибка "Нельзя преобразовать тип real к типу integer" возникает из-за того, что вы пытаетесь сравнивать значения типа real с помощью операции "<=" и ">=". Для исправления этой ошибки вам нужно преобразовать результаты вычислений к типу integer с помощью функции trunc() или round().
Вот исправленный код программы:
program _1;
var
x, y, x1, y1, x2, y2, x3, y3: real;
begin
write('Введите координаты точки(х,у)');
read(x, y);
write('Введите координаты первой вершины треугольника(х1,у1)');
read(x1, y1);
write('Введите координаты второй вершины треугольника(х2,у2)');
read(x2, y2);
write('Введите координаты третьей вершины треугольника(х3,у3)');
read(x3, y3);
if (trunc((x-x2)/(x2-x1)-(y-y2)/(y2-y1)) <= 0) and
(trunc((x-x3)/(x3-x2)-(y-y3)/(y3-y2)) <= 0) and
(trunc((x-x3)/(x3-x1)-(y-y3)/(y3-y1)) >= 0) then
writeln('Точка с введенными вами координатами принадлежит треугольнику')
else
writeln('Точка с введенными вами координатами не принадлежит треугольнику');
end.