Найти недочеты в программе, которая определяет вид треугольника - C#
Формулировка задачи:
"Составить программу, которая определяла бы вид треугольника
(равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если по данным трём отрезкам его можно построить."
При вводе в данную программу, скажем
2
2
1
Должно выполняться условие (Данный треугольник является равнобедренным и остроугольным), но пишет (Данный треугольник является равнобедренным и тупоугольным).
При вводе
2
1
2
Программа вообще не работает
Также при вводе таких чисел как
2
3
4
Программа тоже отказывается работать
Т.е с двумя условиями она работает некорректно
Укажите на ошибки пожалуйста! Уже мозги сломал. Может быть я где-то попутал | с || и & с && ?
Алсо, посоветуйте какие нибудь стоящие книги на тему "программирование с# с нуля"
/*1. Составить программу, которая определяла бы вид треугольника (равносторонний, равнобедренный, разносторонний, прямоугольный, тупоугольный, остроугольный), если по данным трём отрезкам его можно построить.*/ Console.WriteLine("Введите стороны любого треугольника, чтобы определить его свойства"); // Вводим первую сторону треугольника Console.WriteLine("Первая сторона равна:"); string s = Console.ReadLine(); int a = Convert.ToInt32(s); // Вводим вторую сторону треугольника Console.WriteLine("Вторая сторона равна:"); string d = Console.ReadLine(); int b = Convert.ToInt32(d); //Вводим третью сторону треугольника Console.WriteLine("Третья сторона равна:"); string f = Console.ReadLine(); int c = Convert.ToInt32(f); //Вычисляем углы треугольника double q = Math.Acos((b * b) + (c * c) - (a * a)) / (2 * b * c); double w = Math.Acos((a * a) + (c * c) - (b * b)) / (2 * a * c); double e = (180 - (q + w)); //------------------------------------------------------------------------------------------------------------ if ((a + b <= c) | (a + c <= b) | (b + c < a)) Console.WriteLine("Треугольник не существует"); //------------------------------------------------------------------------------------------------------------ else if (a == b & a == c & c == b) Console.WriteLine("Данный треугольник является равносторонним"); else //------------------------------------------------------------------------------------------------------------ if ((a == b | a == c | b == c) & (q > 90 | w > 90 | e > 90)) Console.WriteLine("Данный треугольник является равнобедренным и тупоугольным"); else //------------------------------------------------------------------------------------------------------------ if ((a == b | a == c | b == c) | (q < 90 & w < 90 & e < 90)) Console.WriteLine("Данный треугольник является равнобедренным и остроугольным"); else //------------------------------------------------------------------------------------------------------------ if ((a * a) + (b * b) == (c * c) | (a * a) + (c * c) == (b * b) | (c * c) + (b * b) == (a * a)) Console.WriteLine("Данный треугольник является прямоугольным"); else //------------------------------------------------------------------------------------------------------------ if ((a != b & a != c & b != c) & (q < 90) | w < 90 | e < 90)) Console.WriteLine("Данный треугольник является разносторонним и остроугольным"); else //------------------------------------------------------------------------------------------------------------ if ((a != b & a != c & b != c) & (q > 90 | w > 90 | e > 90)) Console.WriteLine("Данный треугольник является разносторонним и тупоугольным"); else Console.WriteLine(); //------------------------------------------------------------------------------------------------------------ Console.ReadKey();
Решение задачи: «Найти недочеты в программе, которая определяет вид треугольника»
textual
Листинг программы
using System; namespace CyberforumApp { class Program { static void Main() { Console.WriteLine("Введите стороны любого треугольника, чтобы определить его свойства"); // Вводим первую сторону треугольника Console.WriteLine("Первая сторона равна:"); int a = Convert.ToInt32(Console.ReadLine()); // Вводим вторую сторону треугольника Console.WriteLine("Вторая сторона равна:"); int b = Convert.ToInt32(Console.ReadLine()); //Вводим третью сторону треугольника Console.WriteLine("Третья сторона равна:"); int c = Convert.ToInt32(Console.ReadLine()); int alpha = b * b + c * c - a * a; // Величина пропорциональная косинусу угла, противолежащего стороне a. int betha = a * a + c * c - b * b; int gamma = a * a + b * b - c * c; if (a + b <= c || a + c <= b || b + c <= a) Console.WriteLine("Треугольник не существует"); else { if (a == b && a == c && c == b) Console.WriteLine("Треугольник равносторонний(всегда остроугольный)"); else if (a == b || a == c || b == c) { Console.Write("Треугольник равнобедренный"); if (alpha == 0 || betha == 0 || gamma == 0) Console.WriteLine("(прямоугольный)"); else if (alpha < 0 || betha < 0 || gamma < 0) Console.WriteLine("(тупоугольный)"); else Console.WriteLine("(остроугольный)"); } else { Console.Write("Треугольник разносторонний"); if (alpha == 0 || betha == 0 || gamma == 0) Console.WriteLine("(прямоугольный)"); else if (alpha < 0 || betha < 0 || gamma < 0) Console.WriteLine("(тупоугольный)"); else Console.WriteLine("(остроугольный)"); } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д