Программа неправильно высчитывает угол - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Создать программу, которая будет запрашивать у пользователя длины сторон треугольника. После этого программа должна вывести на экран периметр треугольника, площадь и углы, для которых нужно разработать функции. Площадь треугольника можно найти по формуле Герона. Углы можно найти по соотношению сторон. При выполнении программы все приглашения на ввод данных, а также все выводимые данные должны иметь четкое объяснение на экране.
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <Windows.h>
  4. double SemiPerimeter(double a, double b, double c) {
  5. double sPerimeter = (a + b + c) / 2;
  6. return sPerimeter;
  7. }
  8. double Square(double a, double b, double c, double SemiPerimeter) {
  9. double Square_Geron = sqrt(SemiPerimeter*(SemiPerimeter - a)*(SemiPerimeter - b)*(SemiPerimeter - c));
  10. return Square_Geron;
  11. }
  12. double AngleA(double a, double b, double c) {
  13. double Angle_CosA = cos((a*a - b*b + c*c) / 2*(b*c));
  14. return Angle_CosA;
  15. }
  16. double AngleB(double a, double b, double c) {
  17. double Angle_CosB = cos((a*a - b*b + c*c) / 2 * (a*c));
  18. return Angle_CosB;
  19. }
  20. double AngleC(double a, double b, double c) {
  21. double Angle_CosC = cos((a*a - b*b + c*c) / 2 * (a*b));
  22. return Angle_CosC;
  23. }
  24. main() {
  25. SetConsoleCP(1251);
  26. SetConsoleOutputCP(1251);
  27.  
  28. double Square_of_triangle, a, b, c;
  29. double CosA, CosB, CosC;
  30. printf("Введите сторону a: ");
  31. scanf_s("%lf", &a);
  32. printf("Введите сторону b: ");
  33. scanf_s("%lf", &b);
  34. printf("Введите сторону c: ");
  35. scanf_s("%lf", &c);
  36.  
  37. Square_of_triangle = Square(a, b, c, SemiPerimeter(a, b, c));
  38. printf("\tПлоща треугольника за формулою Герона: %f\n\n", Square_of_triangle);
  39. CosA = AngleA(a, b, c);
  40. printf("Кyт a равняется: %f\n", CosA);
  41. CosB = AngleB(a, b, c);
  42. printf("Кyт b равняется: %f\n", CosB);
  43. CosC = AngleC(a, b, c);
  44. printf("Кyт c равняется: %f\n", CosC); }
Проблема заключается в следующем, программа не правильно высчитывает углы, получается что углы не равны 180градусам. Подскажите что поменять в программе. Во-вторых, как можно оптимизировать, что бы не повторять одни и те же действия 3 раза. Зарание СПАСИБО!

Решение задачи: «Программа неправильно высчитывает угол»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <Windows.h>
  4. #include <locale.h>
  5.  
  6. double geron(double a,double b,double c);
  7. double angle(double a,double b,double c);
  8.  
  9.  
  10. int main()
  11. {
  12.     setlocale(LC_ALL,"rus");
  13.  
  14.     double a,b,c;
  15.  
  16.     puts("Введите стороны треугольника:");
  17.     printf("а=");
  18.     scanf("%lf",&a);
  19.     printf("b=");
  20.     scanf("%lf",&b);
  21.     printf("c=");
  22.     scanf("%lf",&c);            
  23.    
  24.                                             // добавить бы проверку на допустимый ввод..
  25.  
  26.     printf("\nПлощадь треугольника равна S=%.2lf\n",geron(a,b,c));
  27.     printf("Угол а=%.2lf\n",angle(a,b,c));//первый аргумент функции - и есть угол
  28.     printf("Угол b=%.2lf\n",angle(b,c,a));
  29.     printf("Угол c=%.2lf\n",angle(c,b,a));
  30.  
  31.     return 0;
  32. }
  33.  
  34. double geron(double a,double b,double c)
  35. {
  36.     double s,p;
  37.  
  38.     p=(a+b+c)/2;
  39.  
  40.     s=sqrt(p*(p-a)*(p-b)*(p-c));
  41.  
  42.     return s;
  43. }
  44.  
  45. double angle(double a,double b,double c)
  46. {
  47.     double ang;
  48.  
  49.     ang=acos((b*b+c*c-a*a)/(2*b*c));
  50.  
  51.     return ang/0.017453; // так как ang - в радианах
  52. }

Объяснение кода листинга программы

  1. В программе спрашивается у пользователя ввести стороны треугольника.
  2. Введенные значения сохраняются в переменных a, b и c.
  3. Вычисляется площадь треугольника с помощью функции geron, которая принимает в качестве аргументов стороны треугольника и возвращает значение площади.
  4. Вычисляются углы треугольника с помощью функции angle, которая принимает в качестве аргументов стороны треугольника и возвращает значение угла в радианах.
  5. Выводится значение площади треугольника.
  6. Выводятся значения углов треугольника, используя функцию angle с соответствующими аргументами.
  7. Возвращается 0, чтобы указать, что программа успешно завершилась.
  8. Функция geron вычисляет площадь треугольника по формуле Герона, которая основана на полупериметре треугольника и длинах его сторон.
  9. Функция angle вычисляет угол треугольника с помощью формулы для вычисления угла в вершине равнобедренного треугольника.
  10. Значения a, b и c передаются в функцию angle для вычисления углов треугольника.
  11. Значения углов треугольника выводятся на экран.
  12. Программа завершается успешно.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы