Не могу найти ошибку. Задача с треугольниками - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д