Не могу найти ошибку. Задача с треугольниками - C#
Формулировка задачи:
Помогите найти ошибку
Заданы три длины —целые числа. Требуется определить, образуют ли отрезки с такими
длинами
1) треугольник
2) равносторонний треугольник
3) равнобедренный треугольник
4) равнобедренный тупоугольный треугольник
5) прямоугольный треугольник
6) тупоугольный треугольник
7) вырожденный треугольник
8) не треугольник
Код
Листинг программы
- private static bool ItsTriangle(double a, double b, double c)
- {
- if ((a + b) < c || (a + c) < b || (b + c) < a)
- return false;
- return true;
- }
- private static bool ItsRavnobedr(double a, double b, double c)
- {
- if ((a == b) && (a + b != c) || (a == c) && (a + c != b) || (b == c) && (c + b != a))
- return true;
- return false;
- }
- private static bool ItsTupoUgol(double a, double b, double c)
- {
- return (((a * a + b * b - c * c) / 2 / a / b) < 0.0) || (((b * b + c * c - a * a) / 2 / b / c) < 0.0) || (((a * a + c * c - b * b) / 2 / a / c) < 0.0);
- }
- private static bool ItsPryamoiUgol(double a, double b, double c)
- {
- if ((a * a + b * b == c * c) || (a * a + c * c == b * b) || (c * c + b * b == a * a))
- return true;
- return false;
- }
- private static bool ItsRavnostor(double a, double b, double c)
- {
- if ((a == b) && (b == c))
- return true;
- return false;
- }
- private static bool RavnobedrTupoug(double a, double b, double c)
- {
- if ((a == b && (c == a + b)) || (a == c && (b == a + c)) || (b == c && (a == b + c)))
- return true;
- return false;
- }
- private static bool Virogdenniy(double a, double b, double c)
- {
- if ((a == b) && (c == 0) || (a == c) && (b == 0) || (b == c) && (a == 0) || (a + b) == c || (a + c) == b || (b + c) == a)
- {
- return true;
- }
- // if ((a + b) == c || (a + c) == b || (b + c) == a)
- return false;
- }
- static void Main(string[] args)
- {
- string source = File.ReadAllText("input.txt");
- string[] sourcearr = source.Split(' ');
- double a = Convert.ToDouble(sourcearr[0]);
- double b = Convert.ToDouble(sourcearr[1]);
- double c = Convert.ToDouble(sourcearr[2]);
- if (ItsTriangle(a, b, c))
- {
- if (RavnobedrTupoug(a, b, c))
- {
- File.WriteAllText("output.txt", "4");
- return;
- }
- if (ItsRavnostor(a, b, c))
- {
- File.WriteAllText("output.txt", "2");
- return;
- }
- if (ItsRavnobedr(a, b, c))
- {
- File.WriteAllText("output.txt", "3");
- return;
- }
- if (ItsPryamoiUgol(a, b, c))
- {
- File.WriteAllText("output.txt", "5");
- return;
- }
- if (ItsTupoUgol(a, b, c))
- {
- File.WriteAllText("output.txt", "6");
- return;
- }
- File.WriteAllText("output.txt", "1");
- return;
- }
- else
- {
- if (Virogdenniy(a, b, c))
- {
- File.WriteAllText("output.txt", "7");
- return;
- }
- File.WriteAllText("output.txt", "8");
- return;
- }
- }
Решение задачи: «Не могу найти ошибку. Задача с треугольниками»
textual
Листинг программы
- enum TypeTriangle { Empty, Rectangular, Obtuse, AcuteAngled, Degenerat }
- TypeTriangle GetTypeTriangle(double a, double b, double c)
- {
- if ((a <= b + c) && (b <= a + c) && (c <= a + b))
- {
- var A = (b * b + c * c - a * a) / (2 * b * c);
- var B = (a * a + c * c - b * b) / (2 * a * c);
- var C = (a * a + b * b - c * c) / (2 * a * b);
- if ((A == 0) || (B == 0) || (C == 0)) { return TypeTriangle.Rectangular; }
- else
- {
- if ((A < 0) || (B < 0) || (C < 0)) { return TypeTriangle.Obtuse; }
- else { return TypeTriangle.AcuteAngled; }
- }
- }
- else { return TypeTriangle.Degenerat; }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д