Программа, определяющая треугольник, на языке C

Задача. Вводятся три целых числа. Определить, может ли существовать треугольник с такими сторонами, и если да, то какой он: разносторонний, равнобедренный или равносторонний?

Пояснение. Треугольник существует только тогда, когда сумма любых его двух сторон больше третьей стороны (или равна ей в случае вырожденного треугольника). У разностороннего треугольника все стороны разные, у равнобедренного - две равны между собой, у равностороннего - все равны.

Для решения данной задачи следует воспользоваться вложенными конструкциями if-else и логическими операторами "И" и "ИЛИ" (в языке программирования C обозначаются как && и ||).

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

  1. Сначала выясняется, существует ли треугольник вообще. Если он существует, то программа продолжает выполняться дальше.
  2. Первым делом проверим, что ни одна из сторон не равна другой. Если это так, то треугольник разносторонний. Программа завершится на этом этапе. Если это не так, то программа перейдет к третьей проверке.
  3. Поскольку во втором пункте был исключен вариант, что все стороны разные, то либо они все равны друг другу, либо существует какая-то пара равных сторон. Проще всего проверить, что все стороны равны друг другу. В таком случае треугольник равносторонний. Если же это не так, то остается только один вариант - треугольник равнобедренный.

Исходный код на C:

#include <stdio.h>

int main() {
    int a, b, c;

    printf("a = ");
    scanf("%d", &a);
    printf("b = ");
    scanf("%d", &b);
    printf("c = ");
    scanf("%d", &c);

    if (a+b <= c || a+c <= b || b+c <= a)  // если хотя бы одно условие выполняется
        printf("Треугольник не существует.\n");
    else if (a != b && a != c && b != c)  // если все условия выполняются
        printf("Разносторонний\n");
    else if (a == b && b == c)
        printf("Равносторонний\n");
    else
        printf("Равнобедренный\n");
}