Nickolay.info. Алгоритмы. Существование треугольника и четырёхугольника

Можно ли по заданным положительным длинам сторон A, B, C построить треугольник?

Чтобы треугольник можно было построить, сумма двух меньших сторон должна быть больше третьей. Определим заодно и вид треугольника - остроугольный он, прямоугольный или тупоугольный.

var a,b,c,r:real;
begin
 {Ввод данных}
 repeat
  write ('Введите положительные A,B,C: ');
  {$I-}read (a,b,c);{$I+}
  if IoResult<>0 then continue;
 until (a>0) and (b>0) and (c>0);
 {Реализация и вывод результата}
 write ('Треугольник ');
 if a<b then begin r:=a; a:=b; b:=r; end;
 if a<c then begin r:=a; a:=c; c:=r; end;
 if a<b+c then begin
  r:=sqr(a)-sqr(b)-sqr(c);
  if r<0 then writeln ('остроугольный')
  else if r=0 then writeln ('прямоугольный')
  else writeln ('тупоугольный');
 end
 else writeln ('построить нельзя');
 write ('Нажмите Enter для выхода');
 reset (input); readln;
end.

Если нам достаточно самого факта существования треугольника, программу можно заметно упростить. Не будем сортировать стороны треугольника по возрастанию или убыванию, ограничившись проверкой, что не существует суммы длин двух сторон, которая была бы не больше длины третьей стороны. Приведём только изменённую часть "расчёт":

 {Реализация и вывод результата}
 write ('Треугольник ');
 if (a+b<=c) or (a+c<=b) or (b+c<=a) then write ('не ');
 writeln ('существует');

Даны действительные положительные числа A, B, C, D. Выяснить, можно ли построить четырёхугольник со сторонами A, B, C, D. Решение этой задачи, пожалуй, теперь ещё проще.

var a,b,c,d:real;
begin
 {Ввод данных}
 repeat
  write ('Введите положительные A,B,C,D: ');
  {$I-}read (a,b,c,d);{$I+}
  if IoResult<>0 then continue;
 until (a>0) and (b>0) and (c>0) and (d>0);
 {Реализация и вывод результата}
 write ('Четырехугольник ');
 if (a+b+c<=d) or (b+c+d<=a) or (c+d+a<=b) or (d+a+b<=c) then write ('не ');
 writeln ('существует');
 write ('Нажмите Enter для выхода');
 reset (input); readln;
end.

Попробуйте обобщить задачу, получив критерий существования N-угольника.

Рейтинг@Mail.ru

вверх гостевая; E-mail