Определить возможность существования треугольника по сторонам

Задача: 

Треугольник существует только тогда, когда сумма любых двух его сторон больше третьей.

Дано: a, b, c – стороны предполагаемого треугольника.
Требуется сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует.

Алгоритм решения задачи: 

Приведено решение задачи на языке программирования Паскаль двумя способами. В одном случае, все условия проверяются в одном операторе if; во втором случае каждое условие проверяется отдельно, а программа содержит вложенные операторы if-else.

Программа на языке Паскаль: 

var a, b, c: integer;
 
begin
    write (' Длины сторон: ');
    readln (a,b,c);
 
    if (a < b+c) and (b < a+c) and (c < a+b) then
        writeln ('Треугольник существует.')
    else
        writeln ('Треугольник не существует.');
 
readln
end.

var a, b, c: integer;
 
begin
    write ('Длины сторон: ');
    readln (a,b,c);
 
    if a < b+c then
        if b < a+c then
            if c < a+b then
                writeln ('Треугольник существует.')
            else
                writeln ('Треугольник не существует.')
        else
            writeln ('Треугольник не существует.')
    else
        writeln ('Треугольник не существует.');
 
readln
end.

Комментарии

помогите пожалуйста

Необходимо составить алгоритм и программу на языке Паскаль для решения двух задач.
1. Програма, яка перевіряє чи виконується умова існування трикутника.

2. Визначити яка з двох крапок знаходиться далі від: початку координат; кола заданого радіусу з центром на початку координат.

помогите

определить вид треугольника не по углам, а по сторонам.

помогите

как написать программу которая будет площадь треугольника находить.

ну как-то так

program S_treygolnika;
var
a,b,c,s,area:real;
begin
writeln('Введите стороны треугольника');
read(a,b,c);
s:=(a+b+c)/2;
area:=sqrt(s*(s-a)*(s-b)*(s-c));
writeln('Площадь треугольника равна ',area);
end.

Площадь треугольника.

Для прямоугольного треугольника.

program right_triangle;
var a, b, : real;
begin
          write('right triangle a: ');
        readln(a);
          write('right triangle b: ');
        readln(b);
                    right triangle a:=1/2*(a*b);
 
            writeln('a: ',a:7:2);
                 end.

Ошибка в написании

Вы забыли добавить еще условие, не только больше но и равны.
"if (a <= b+c) and (b <= a+c) and (c <= a+b) then"
Пример 1 2 3 (стороны) - треугольник существует.

Попробуйте нарисовать

Попробуйте нарисовать треугольник со сторонами 1, 2 и 3 см.

Проблема с рисованием линий?

И что? Это будет отрезок в 3 см. Вырожденный треугольник тоже треугольник.

Кто нибудь знает?

Найти количество различных невырожденных треугольников таких, что их периметр равен заданному числу N.

Как это можно сократить?

program FLHW_2; {Требуется сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольника с такими сторонами не существует. Дополнительно вывести на экран то, каким является треугольник(р\б, р\с, п\у). Дополнительно вывести на экран S= и P= треугольников.}

uses crt;
var a,b,c,t,P:integer;
    h,S:real;
begin
writeln('введите длины сторон треугольника abc ');
readln(a,b,c);
t:=0;
if (a+b>c) and (b+c>a) and (c+a>b) then
 begin
 writeln('такой треугольник существует!');
 readln;
 t:=t+1;
 end
else
 begin
 writeln('такой треугольник НЕ существует!');
 readln;
 end;
if t=1 then
 begin
 if (a=b) and (a<>c) then
  begin
  writeln('Треугольник равнобедренный');
  readln;
  P:=a+b+c;
  h:=sqrt(sqr(a)-sqr(c/2))
  S:=0.5*h*c;
  writeln('Периметр р\б треугольника=',P);
  readln;
  writeln('Площадь р\б треугольника=',S:0:1);
  readln;
  end;
  if (a=c) and (a<>b) then
   begin
   writeln('Треугольник равнобедренный');
   readln;
   P:=a+b+c;
   h:=sqrt(sqr(a)-sqr(b/2))
   S:=0.5*h*b;
   writeln('Периметр р\б треугольника=',P);
   readln;
   writeln('Площадь р\б треугольника=',S:0:1);
   readln;
   end;
   if (b=c) and (b<>a) then
    begin
    writeln('Треугольник равнобедренный');
    readln;
    P:=a+b+c;
    h:=sqrt(sqr(c)-sqr(a/2))
    S:=0.5*h*a;
    writeln('Периметр р\б треугольника=',P);
    readln;
    writeln('Площадь р\б треугольника=',S:0:1);
    readln;
    end;
 if (a=b) and (a=c) then
  begin
  writeln('Треугольник равносторонний');
  readln;
  P:=a+b+c;
  h:=(a*sqrt(3))/2;
  S:=0.5*h*a;
  writeln('Периметр р\б треугольника=',P);
  readln;
  writeln('Площадь р\б треугольника=',S:0:1);
  readln;
  end;
 if (sqr(a)=sqr(b)+sqr(c)) then
  begin
  writeln('Треугольник прямоугольный');
  readln;
  P:=a+b+c;
  S:=0.5*b*c;
  writeln('Периметр р\б треугольника=',P);
  readln;
  writeln('Площадь р\б треугольника=',S:0:1);
  readln;
  end;
  if (sqr(c)=sqr(b)+sqr(a))then
   begin
   writeln('Треугольник прямоугольный');
   readln;
   P:=a+b+c;
   S:=0.5*b*a;
   writeln('Периметр р\б треугольника=',P);
   readln;
   writeln('Площадь р\б треугольника=',S:0:1);
   readln;
   end;
   if (sqr(b)=sqr(a)+sqr(c)) then
    begin
    writeln('Треугольник прямоугольный');
    readln;
    P:=a+b+c;
    S:=0.5*a*c;
    writeln('Периметр р\б треугольника=',P);
    readln;
    writeln('Площадь р\б треугольника=',S:0:1);
    readln;
    end;
 end;
end.

Потратил около 20 минут

Program Treugolnik;
 
var a,b,c:real;
 
Begin
   write('Введите значение a='); readln(a);
   write('Введите значение b='); readln(b);
   write('Введите значение c='); readln(c);
   if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then
      if (a=b) and (a=c) and (c=b) then
         writeln('Треугольник равносторонний')
      else 
         if (a=b) or (b=c) or (a=c) then
            writeln('Треугольник равнобедренный')
         else 
            writeln('Треугольник разносторонний')
   else 
      writeln('Извините, треугольника с такими сторонами быть не может');
 
end.

Решил немного дополнить.

Я горд собой, усложнив себе задачу я потратил час. Надо сделать так, что если треугольник существует, то определить является ли он равнобедренным или равносторонним.

var a,b,c:integer;
Begin
Writeln('Введите длины сторон треугольника' );
Readln(a,b,c);
Writeln('Треугольник со сторонами  ',a,', ',b,', ',c);
if (a >= b+c) or (b >= a+c) or (c >= b+a)then Writeln('Не существует')
else begin
if (a=b) and (b=c) and (c=a) then Writeln('Является равнобедренным ')
else begin
if (a=b) or (a=c) or (b=c)
then Writeln('Является равносторонним')
else Writeln('Существует');
end;
end;
END.

Равнобедренный и

Равнобедренный и равносторонний надо поменять местами.

Час? Это школьник 10-го

Час? Это школьник 10-го класса сделает за 10 минут максимум

Неправильно, гордый человек

Треугольник является равнобедренным, если какие-либо две его стороны будут равны.
А равносторонним, когда все стороны равны.
То есть, вы перепутали "or"(это или) и "and"(это и).

а если a, b или с - точка? то

а если a, b или с - точка? то есть равны 0?

Треугольники

Ты путаешь равнобедренные и равносторонние треугольники:

 if (a=b) and (b=c) and (c=a) then Writeln('Является равнобедренным ')

if (a=b) or (a=c) or (b=c)
then Writeln('Является равносторонним')

Треугольник существует только

Треугольник существует только тогда, когда сумма любых двух его сторон МЕНЬШЕ третьей. Не опечатка ли?

вроде все правильно. Как

вроде все правильно. Как может существовать треугольник со сторонами 2, 3, 6? сумма должна быть больше

Да, опечатка. Исправлено.

Да, опечатка. Исправлено.

треугольник

Задача решена неправильно, допустим треугольик со сторонами 3, 2, 5 существует? Нет не существует, а программа скажет, что существует!

Смотрите, a := 3; b := 2; c

Смотрите,
a := 3;
b := 2;
c := 5.
Выражени c < a+b (т.е. 5 < 5) вернет ложь, т.к. неравенство строгое (не такое как 5 <=5 ).
Поэтому содержимое ветки if не выполнится и программа не скажет, что такой треугольник существует.

(Хотя по сути у такого треугольника две стороны лежат на третьей, и он выглядит как линия )))

Таким образом открыли новое

Таким образом открыли новое понятие в геометрии - линейный треугольник)))

А если сделать так?

А если не городить несколько вложенных else-if, а сделать одним, вот так:

var a, b, c: integer;
begin
write('Введите длины сторон треугольника: ');
read(a, b, c);
if (a<(c+b)) and (b<(a+c)) and (c<(a+b)) then write('Такой треугольник существует.')
else write('Такой треугольник не существует.');
read;
end.

Я точно так же сделал)),

Я точно так же сделал)), только вместо and писал or и знак > делал

if (a<(c+b)) and (b<(a+c))

if (a<(c+b)) and (b<(a+c)) and (c<(a+b))
- это лучше, чем первый вариант решения. Тут сразу видно что эти условия (одна сторона<суммы др.) должно выполняться одновременно и другомы понять код легче.

Помогите!

Помогите пожалуйста! Заданы длины двух катетов прямоугольного треугольника a, b. Вычислить длину гипотенузы c и величины двух углов треугольника , . Если >500, то вычислить площадь треугольника. Если <500, то вычислить сумму длин его сторон.