Не работает неранество в pascal
var
x,y:integer;
begin
readln(x);
readln(y);
if (x=90) or (y=90) or (180-(x+y)=90) then
writeln('прямоугольный');
if (x>90) or (y>90) or (180-(x+y)>90) and (180-(x+y)<>90) and (x<>90) and (y<>90) then
writeln('тупоугольный');
if (x<90) or (y<90) or (180-(x+y)<90) and (180-(x+y)<>90) and (x<>90) and (y<>90) then
writeln('остроугольный');
end.
Цель программы-определить, что треугольник является прямоугольным, однако после того, как она определяет треугольник прямоугольным, программа продолжает выполняться и пишет, что треугольник прямоугольный и остроугольный. Я попытался решить эту проблему, добавив неравенство 90 градусам в условие остроугольности и тупоугольности, но оно все равно не работает
Ответы (1 шт):
"Оно" как раз работает! Именно так, как написано - все три проверки у тебя независимые, а поскольку в каждом прямоугольном треугольнике есть два острых угла, то сначала определяется, что треугольнык прямоугольный, а потом, что он остроугольный. Замени два последних if на else if.
Упрощения:
(180-(x+y)=90)это то же самое, что(x+y=90)(180-(x+y)<>90)это то же самое, что(x+y<>90)(180-(x+y)>90)это то же самое, что(x+y<90)(180-(x+y)<90)это то же самое, что(x+y>90)
Не усложняй жизнь себе и другим :)