Задача. Заданы три числа: [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]. Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип: равносторонний, равнобедренный, разносторонний. Замечание. Условие существования треугольника: [latex]a\leq b+c[/latex]; [latex]b\leq a+c[/latex]; [latex]c\leq a+b[/latex]. Нельзя исключать экстремальных случаев, когда одна (или несколько) сторон равны нулю либо когда одно из неравенств переходит в равенство (треугольник нулевой площади).
a | b | c | Тип треугольника | Комментарий |
0 | 3 | 7 | — | Не треугольник |
-2 | 5 | 4 | — | Не треугольник |
1 | 3 | 4 | Треугольник нулевой площади | Пройден |
7 | 7 | 7 | Равносторонний | Пройден |
15 | 9 | 15 | Равнобедренный | Пройден |
3 | 4 | 5 | Разносторонний | Пройден |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <stdio.h> #include <math.h> int main() { double a, b, c; scanf("%lf %lf %lf", &a, &b, &c); if (a<=b+c && b<=a+c && c<=b+a) { if (a==b+c || b==c+a || c==a+b || a==0 || b==0 || c==0) printf("Треугольник нулевой площади"); else if (a==b && b==c && c==a) printf("Равносторонний"); else if (a==b ^ b==c ^ c==a) printf("Равнобедренный"); else printf("Разносторонний"); } else printf("Не треугольник"); return 0; } |
Для проверки выполнения программы можно воспользоваться ссылкой.
Решение на Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); double a, b, c; a = in.nextDouble(); b = in.nextDouble(); c = in.nextDouble(); if (a<=b+c && b<=a+c && c<=b+a) { if (a==b+c || b==c+a || c==a+b || a==0 || b==0 || c==0) System.out.print("Треугольник нулевой площади"); else if (a==b && b==c && c==a) System.out.print("Равносторонний"); else if (a==b ^ b==c ^ c==a) System.out.print("Равнобедренный"); else System.out.print("Разносторонний"); } else System.out.print("Не треугольник"); } } |
По алгоритму:
— «Нельзя исключать экстремальных случаев, когда одна (или несколько) сторон равны нулю». А Вы сразу в 7-й строке исключили. Для такого вырожденного случая нас просят написать «Треугольник нулевой площади»
По оформлению:
— Все else должны стоять под своими if. В Вашем случае допустимо все else-if поставить одно под другим, чтобы избежать длиной лесенки. Но всё равно они должны быть под первым if из 8-й строки. Иначе легко запутаться в такой структуре.
— Уберите пожалуйста восклицательные знаки если это не факториал 🙂
Ошибки исправлены.
Ага. Зато исчезли отступы.
Добавила
Зачтено
Java версия засчитана, 5 баллов — увы, просрочено.