Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Blizzardgo
1 / 0 / 2
Регистрация: 25.06.2015
Сообщений: 130
1

Программа неправильно высчитывает угол

07.12.2016, 19:44. Просмотров 330. Ответов 1
Метки нет (Все метки)

Создать программу, которая будет запрашивать у пользователя длины сторон треугольника. После этого программа должна вывести на экран периметр треугольника, площадь и углы, для которых нужно разработать функции. Площадь треугольника можно найти по формуле Герона. Углы можно найти по соотношению сторон. При выполнении программы все приглашения на ввод данных, а также все выводимые данные должны иметь четкое объяснение на экране.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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);  }
Проблема заключается в следующем, программа не правильно высчитывает углы, получается что углы не равны 180градусам. Подскажите что поменять в программе. Во-вторых, как можно оптимизировать, что бы не повторять одни и те же действия 3 раза. Зарание СПАСИБО!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2016, 19:44
Ответы с готовыми решениями:

Программа высчитывает площадь поверхности указанной фигуры
помогите пожалуйста с программой. необходимо ввести с клавиатуры наименование геометрической...

Программа неправильно умножает
Пишу на турбо си. Может я чего то не понимаю в си (изучаю недавно), но по факту программа...

Неправильно выполняется программа
Проблема в том, что программа для любого инпута каждый раз выводит на экран: 1. Будто бы игнорирует...

Программа неправильно рассчитывает математические функции
Доброго времени суток! Ребят, помогите подружиться с си. Пишу программу вот такого вида #include...

Программа неправильно работает. Найдите ошибку
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; int main() { int grade; int aCount=0, bCount=0, ...

1
pakanpak
48 / 48 / 46
Регистрация: 18.11.2016
Сообщений: 104
07.12.2016, 20:43 2
Blizzardgo, в вашем коде угловые функции возвращают значение косинусов, а не углов. Я бы сделал так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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 - в радианах
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 20:43

Программа неправильно находит min и max в строке
Помогите найти ошибку #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; int main()...

Программа неправильно считает еженедельную зарплату каждого служащего
Есть задача: Компания платит своим служащим как администраторам (это те, кто получает еженедельно...

Подсчет слов в строке - Из-за апострофов программа работает неправильно
из-за например апострофов программа работает неправильно. #include &lt;stdio.h&gt; #include &lt;stdbool.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru