Форум программистов, компьютерный форум CyberForum.ru

Как сделать что бы угол вводился в градусах - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 18:36     Как сделать что бы угол вводился в градусах #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
// Переход от алгебраической формы записи комплексного числа к показательной
// и наоборот
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    const double pi = 3.14;
    double a1;                              // действительная часть комплексного числа (алгебраическая форма) ; модуль (показательная форма)
    double a2;                              // мнимая часть комплексного числа (алгебраическая форма)
    double c;                               // угол
 
OneMoreTime:
    {
    cin >> a1;                              
    cin >> a2;                              
        if(a2==0)                               // показательная форма записи комплексного числа
        {
            double a3;                          // мнимая часть комплексного числа 
            cin >> c;                           // угол в радианах
            c = 180 / pi * c;                   // угол в градусах
            a2 = a1 * cos(c);                   // определение действительной части комплексного числа
            a3 = a1 * sin(c);                   // определение мнимой части комплексного числа
 
            if(a3 < 0)
                cout << endl
                     << a2 << "-j" << abs(a3);
            else
                cout << endl
                     << a2 << "+j" << a3;
        }
    }
 
    cout << endl
         << "Hotite perevesti ewe 1 primer(da - 1, net - 0)?" << endl;
    int b;
    cin >> b;
 
    switch(b)
    {
    case 1: goto OneMoreTime;
    case 0: break;
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 18:36     Как сделать что бы угол вводился в градусах
Посмотрите здесь:

C++ С++.Мне надо поменять cout-ы,чтобы сначала вводился текст,а потом искомое слово!
C++ Вычислить угол φ (в градусах) между положениями часовой стрелки в заданное время
C++ Код не работает,говорит,что не знает,что такое delay(100).в чём проблема?как сделать,чтоб программа заработала?
как сделать что бы когда нажал выбор кокого нить пункта, а он выделялся и с помощью Enter я подтверждаю что выбираю C++
C++ как проверить что в консоль вводился только английский алфавит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 19:25     Как сделать что бы угол вводился в градусах #2
Мда печалька, кто мешает ввести в градусах а затем преобразовать?
C++
1
2
3
4
double angle = 0;
double PI_2  = asin(1.0);
cout<<"Enter angle (in degrees) : "; cin>>angle;
cout<<"sin(angle) : "<<sin(angle*PI_2 / 180 );
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 19:34  [ТС]     Как сделать что бы угол вводился в градусах #3
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Переход от алгебраической формы записи комплексного числа к показательной
// и наоборот
#include <iostream>
#include <cmath>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    const double pi = 3.14;
    double a1;                              // действительная часть комплексного числа (алгебраическая форма) ; модуль (показательная форма) 
    double a2;                              // мнимая часть комплексного числа (алгебраическая форма)
    double c;                               // угол
 
OneMoreTime:
    {
    cin >> a1;                              
    cin >> a2;                              
        if(a2==0)                               // показательная форма записи комплексного числа
        {
            double a3;                          // мнимая часть комплексного числа 
            cin >> c;                           // угол в радианах
            c = 180 / pi * c;                   // угол в градусах
            a2 = a1 * cos(c);                   // определение действительной части комплексного числа
            a3 = a1 * sin(c);                   // определение мнимой части комплексного числа
 
            if(a3 < 0)
                cout << endl
                     << a2 << "-j" << abs(a3);
            else
                cout << endl
                     << a2 << "+j" << a3;
        }
        
        if((a1 > 0) && (a2 > 0))
        {
            double b1;                          // модуль (показательная форма)
            b1 = sqrt(a1*a1+a2*a2);
            c = 1/tan(a2/a1);                   // угол в радианах
            c = c * 180 / pi;                   // угол в градусах
            cout << endl <<
                 b1 << "e^" << c << endl;
        }
 
        if((a1 < 0) && (a2 < 0))
        {
            double b1;                          // модуль (показательная форма)
            b1 = sqrt(a1*a1+a2*a2);
            c = 1/tan(a2/a1);                   // угол в радианах
            c = 180 + (180 / pi * c);           // угол в градусах
            cout << endl <<
                 b1 << "e^" << c << endl;
        }
 
        if((a1 > 0) && (a2 < 0))
        {
            double b1;                          // модуль (показательная форма)
            b1 = sqrt(a1*a1+a2*a2);
            c = 1/tan(a2/a1);                   // угол в радианах
            c = - (180 / pi * c);               // угол в градусах
            cout << endl <<
                 b1 << "e^" << c << endl;
        }
 
        if((a1 < 0) && (a2 > 0))
        {
            double b1;                          // модуль (показательная форма)
            b1 = sqrt(a1*a1+a2*a2);
            c = 1/tan(a2/a1);                   // угол в радианах
            c = 180 + (180 / pi * c);           // угол в градусах
            cout << endl <<
                 b1 << "e^" << c << endl;
        }
 
 
    }
 
    cout << endl
         << "Hotite perevesti ewe 1 primer(da - 1, net - 0)?" << endl;
    int b;
    cin >> b;
 
    switch(b)
    {
    case 1: goto OneMoreTime;
    case 0: break;
    }
 
    return 0;
}
полная версия программы

Добавлено через 7 минут
-=ЮрА=-, спасибо .
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 19:47     Как сделать что бы угол вводился в градусах #4
Цитата Сообщение от IchimaruGin Посмотреть сообщение
c = 180 / pi * c; * * * * * * * * * // угол в градусах
* * * * * * a2 = a1 * cos(c); * * * * * * * * * // определение действительной части комплексного числа
* * * * * * a3 = a1 * sin(c);
- это целиком неверно, угол либо вводиться в радианах, с ним производятся действия, либо вводиться в градусах, переводиться в радианы а затем используется функциями.
Цитата Сообщение от IchimaruGin Посмотреть сообщение
cin >> c; * * * * * * * * * * * * * // угол в радианах
* * * * * * a2 = a1 * cos(c); * * * * * * * * * // определение действительной части комплексного числа
* * * * * * a3 = a1 * sin(c); * * * * * * * * * // определение мнимой части комплексного числа
c = 180 / pi * c; * * * * * * * * * // угол в градусах
- вот так функции синуса и косинуса будут выдавать корректные значения(угол естественно в радианах)
На счёт комплексов - рекомендую к ознакомлению,
http://www.cyberforum.ru/faq/thread4...ml#post2432704

Комплекс задаётся либо
a) в показательной форме - тогда имеем его модуль и угол (вот такая запись http://www.cyberforum.ru/cgi-bin/latex.cgi?\tilde{Z} = {Z}_{m}*{e}^{j*\varphi })
б) в алгебраической форме (которая тесно связана с тригонометрической и даже не знаю зачем разделять эти две формы записи)
http://www.cyberforum.ru/cgi-bin/latex.cgi?\tilde{Z} = {Z}_{m}*cos(\varphi) + j*{Z}_{m}*sin(\varphi) = {Z}_{m}*(cos(\varphi) + j*sin(\varphi))
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 20:11  [ТС]     Как сделать что бы угол вводился в градусах #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- вот так функции синуса и косинуса будут выдавать корректные значения(угол естественно в радианах)
мне нужно что бы я там задавал угол в градусах (например 30 градусов что бы был синус) а не в радианах.
Если я введу 30 радиан то оно понятно что синус(30 радиан) != синусу(30 градусов)
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 20:44     Как сделать что бы угол вводился в градусах #6
IchimaruGin, я же только что вверху показал как это делать, ладно смотри.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double PI_2  = asin(1.0);//это значение Пи/2
    //Симулируем ввод 5 значений угла в градусах 0,30,45,60,90 градусов
    double angle[] = {0, 30, 45, 60, 90};
    int nElem = sizeof(angle) / sizeof(angle[0]);
    for( int i = 0; i < nElem; i++ )
    {
        cout<<"angle (in degrees) : "<<angle[i]<<endl;
        cout<<"sin(angle) : "<<sin(angle[i]*PI_2 / 90 )<<endl;
    }
    return 0;
}
http://codepad.org/Wp8bH5wW
angle (in degrees) : 0
sin(angle) : 0
angle (in degrees) : 30
sin(angle) : 0.5
angle (in degrees) : 45
sin(angle) : 0.707107
angle (in degrees) : 60
sin(angle) : 0.866025
angle (in degrees) : 90
sin(angle) : 1
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 22:03  [ТС]     Как сделать что бы угол вводился в градусах #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Мда печалька, кто мешает ввести в градусах а затем преобразовать?
C++
1
2
3
4
double angle = 0;
double PI_2  = asin(1.0);
cout<<"Enter angle (in degrees) : "; cin>>angle;
cout<<"sin(angle) : "<<sin(angle*PI_2 / 180 );
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double PI_2  = asin(1.0);//это значение Пи/2
    //Симулируем ввод 5 значений угла в градусах 0,30,45,60,90 градусов
    double angle[] = {0, 30, 45, 60, 90};
    int nElem = sizeof(angle) / sizeof(angle[0]);
    for( int i = 0; i < nElem; i++ )
    {
        cout<<"angle (in degrees) : "<<angle[i]<<endl;
        cout<<"sin(angle) : "<<sin(angle[i]*PI_2 / 90 )<<endl;
    }
    return 0;
}
почему у тебя в первом примере деление на 180 а во втором на 90? как правильно?
я переписал код с делением на 180 то результаты не сходятся
с теми что сам щитал...
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 22:08     Как сделать что бы угол вводился в градусах #8
Цитата Сообщение от IchimaruGin Посмотреть сообщение
почему у тебя в первом примере деление на 180 а во втором на 90? как правильно?
я переписал код с делением на 180 то результаты не сходятся
с теми что сам щитал...
- последний правильный
Цитата Сообщение от IchimaruGin Посмотреть сообщение
int main()
{
* * double PI_2 *= asin(1.0);//это значение Пи/2
* * //Симулируем ввод 5 значений угла в градусах 0,30,45,60,90 градусов
* * double angle[] = {0, 30, 45, 60, 90};
* * int nElem = sizeof(angle) / sizeof(angle[0]);
* * for( int i = 0; i < nElem; i++ )
* * {
* * * * cout<<"angle (in degrees) : "<<angle[i]<<endl;
* * * * cout<<"sin(angle) : "<<sin(angle[i]*PI_2 / 90 )<<endl;
* * }
* * return 0;
}

Думаю результаты уже очевидней некуда
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
angle (in degrees) : 0
sin(angle) : 0
angle (in degrees) : 30
sin(angle) : 0.5
angle (in degrees) : 45
sin(angle) : 0.707107
angle (in degrees) : 60
sin(angle) : 0.866025
angle (in degrees) : 90
sin(angle) : 1
Добавлено через 2 минуты
Цитата Сообщение от IchimaruGin Посмотреть сообщение
с теми что сам щитал...
какие именно значения были получены?
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 22:12  [ТС]     Как сделать что бы угол вводился в градусах #9
-=ЮрА=-,
о теперь начала работать но только переход от показательной в алгебраическую форму
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 22:19     Как сделать что бы угол вводился в градусах #10
Цитата Сообщение от IchimaruGin Посмотреть сообщение
о теперь начала работать но только переход от показательной в алгебраическую форму
- ну так претензии к своему коду предъявляй, я же сказал прочесть о комплексах, смысл мне что либо показывать если у тебя нет полного представления о комплексных числах?
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 22:24  [ТС]     Как сделать что бы угол вводился в градусах #11
представление о комплексных числах у меня есть, просто в С++ трудновато показать.

C++
1
2
3
4
5
6
7
8
                if((a1 > 0) && (a2 > 0))
                {
                    double b1;                          // модуль (показательная форма)
                    b1 = sqrt(a1*a1+a2*a2);
                    c = 1/tan(a2/a1);
                    cout << endl <<
                         b1 << "e^(j*" << c << ")" << endl;
                }
в чем здесь ошибка? если не надоел отпиши)
-=ЮрА=-
Заблокирован
Автор FAQ
14.09.2013, 22:42     Как сделать что бы угол вводился в градусах #12
Цитата Сообщение от IchimaruGin Посмотреть сообщение
c = 1/tan(a2/a1);
- что такое отношение мнимой и действительной части - этот тангенс, но кто сказал, что тангенс связан с арктангенсом вот такой зависимостью
Цитата Сообщение от IchimaruGin Посмотреть сообщение
c = 1/tan(a2/a1);
- ты написал котангенс от тангенса (короче вообще не то), а тебе надо арк_тангенс (угол тебе взять надо) юзай atan либо atan2

Добавлено через 7 минут
Цитата Сообщение от IchimaruGin Посмотреть сообщение
c = 1/tan(a2/a1);
C++
1
angle = atan2(y, x); //это в радианах будет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2013, 23:38     Как сделать что бы угол вводился в градусах
Еще ссылки по теме:

Как сделать так чтобы результат выводился в градусах ? C++
C++ Найти угол, выраженный в радианах и градусах между векторами A(xa, ya) и B(xb, yb)
C++ Угол а задан в градусах, минутах и секундах, найти его величину в радианах

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

Или воспользуйтесь поиском по форуму:
IchimaruGin
59 / 59 / 22
Регистрация: 14.07.2013
Сообщений: 271
Завершенные тесты: 1
14.09.2013, 23:38  [ТС]     Как сделать что бы угол вводился в градусах #13
все норм
Yandex
Объявления
14.09.2013, 23:38     Как сделать что бы угол вводился в градусах
Ответ Создать тему
Опции темы

Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru