Программа неправильно высчитывает угол - C (СИ)
Формулировка задачи:
Создать программу, которая будет запрашивать у пользователя длины сторон треугольника. После этого программа должна вывести на экран периметр треугольника, площадь и углы, для которых нужно разработать функции. Площадь треугольника можно найти по формуле Герона. Углы можно найти по соотношению сторон. При выполнении программы все приглашения на ввод данных, а также все выводимые данные должны иметь четкое объяснение на экране.
Проблема заключается в следующем, программа не правильно высчитывает углы, получается что углы не равны 180градусам. Подскажите что поменять в программе. Во-вторых, как можно оптимизировать, что бы не повторять одни и те же действия 3 раза. Зарание СПАСИБО!
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <Windows.h>
- double SemiPerimeter(double a, double b, double c) {
- double sPerimeter = (a + b + c) / 2;
- return sPerimeter;
- }
- double Square(double a, double b, double c, double SemiPerimeter) {
- double Square_Geron = sqrt(SemiPerimeter*(SemiPerimeter - a)*(SemiPerimeter - b)*(SemiPerimeter - c));
- return Square_Geron;
- }
- double AngleA(double a, double b, double c) {
- double Angle_CosA = cos((a*a - b*b + c*c) / 2*(b*c));
- return Angle_CosA;
- }
- double AngleB(double a, double b, double c) {
- double Angle_CosB = cos((a*a - b*b + c*c) / 2 * (a*c));
- return Angle_CosB;
- }
- double AngleC(double a, double b, double c) {
- double Angle_CosC = cos((a*a - b*b + c*c) / 2 * (a*b));
- return Angle_CosC;
- }
- main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- double Square_of_triangle, a, b, c;
- double CosA, CosB, CosC;
- printf("Введите сторону a: ");
- scanf_s("%lf", &a);
- printf("Введите сторону b: ");
- scanf_s("%lf", &b);
- printf("Введите сторону c: ");
- scanf_s("%lf", &c);
- Square_of_triangle = Square(a, b, c, SemiPerimeter(a, b, c));
- printf("\tПлоща треугольника за формулою Герона: %f\n\n", Square_of_triangle);
- CosA = AngleA(a, b, c);
- printf("Кyт a равняется: %f\n", CosA);
- CosB = AngleB(a, b, c);
- printf("Кyт b равняется: %f\n", CosB);
- CosC = AngleC(a, b, c);
- printf("Кyт c равняется: %f\n", CosC); }
Решение задачи: «Программа неправильно высчитывает угол»
textual
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <Windows.h>
- #include <locale.h>
- double geron(double a,double b,double c);
- double angle(double a,double b,double c);
- int main()
- {
- setlocale(LC_ALL,"rus");
- double a,b,c;
- puts("Введите стороны треугольника:");
- printf("а=");
- scanf("%lf",&a);
- printf("b=");
- scanf("%lf",&b);
- printf("c=");
- scanf("%lf",&c);
- // добавить бы проверку на допустимый ввод..
- printf("\nПлощадь треугольника равна S=%.2lf\n",geron(a,b,c));
- printf("Угол а=%.2lf\n",angle(a,b,c));//первый аргумент функции - и есть угол
- printf("Угол b=%.2lf\n",angle(b,c,a));
- printf("Угол c=%.2lf\n",angle(c,b,a));
- return 0;
- }
- double geron(double a,double b,double c)
- {
- double s,p;
- p=(a+b+c)/2;
- s=sqrt(p*(p-a)*(p-b)*(p-c));
- return s;
- }
- double angle(double a,double b,double c)
- {
- double ang;
- ang=acos((b*b+c*c-a*a)/(2*b*c));
- return ang/0.017453; // так как ang - в радианах
- }
Объяснение кода листинга программы
- В программе спрашивается у пользователя ввести стороны треугольника.
- Введенные значения сохраняются в переменных a, b и c.
- Вычисляется площадь треугольника с помощью функции geron, которая принимает в качестве аргументов стороны треугольника и возвращает значение площади.
- Вычисляются углы треугольника с помощью функции angle, которая принимает в качестве аргументов стороны треугольника и возвращает значение угла в радианах.
- Выводится значение площади треугольника.
- Выводятся значения углов треугольника, используя функцию angle с соответствующими аргументами.
- Возвращается 0, чтобы указать, что программа успешно завершилась.
- Функция geron вычисляет площадь треугольника по формуле Герона, которая основана на полупериметре треугольника и длинах его сторон.
- Функция angle вычисляет угол треугольника с помощью формулы для вычисления угла в вершине равнобедренного треугольника.
- Значения a, b и c передаются в функцию angle для вычисления углов треугольника.
- Значения углов треугольника выводятся на экран.
- Программа завершается успешно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д