Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/438: Рейтинг темы: голосов - 438, средняя оценка - 4.91
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296

Перевод угла из радиан в градусы, минуты и секунды

07.11.2009, 10:40. Показов 87623. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, тут написал программу, которая переводит значение угла, заданное в радианах в градусы с десятичной дробной частью, но мне необходимо чтобы программа переводила радианы в градусы, минуты и секунды. Еще немаловажный момент, что константа pi должна иметь максимально точное значение, вычисляемое самой программой.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const double pi = 3.14;
    double rad;
    cout<<"Введите значение угла в радианах: "<<endl;
    cin>>rad;
    double result = 180/pi*rad;
    cout<<"Значение угла в градусах = "<<result<<endl;
 
 
}
P.S. Уважаемые программисты, пожалуйста не утруждайте себя изменением моего кода и проверкой, просто посоветуйте как вычислить максимально точное pi и осуществить перевод дробной части в минуты и секунды.

Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2009, 10:40
Ответы с готовыми решениями:

Перевести радианную меру угла в градусы, минуты и секунды
Перевести радианную меру угла в градусы, минуты и секунды.

Перевод радиан в градусы, минуты и секунды
Имеется матрица в радианах, нужно создать матрицу из значений вида x°y'z&quot;. Если DMS переводит из градусов в радианы, нет ли обратной...

Перевод радиан в градусы, минуты, секунды
Не правильно выводит секунды.

20
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.11.2009, 15:37
selevit, какой смысл вычислять число пи, если оно известно?
По поводу дробной части - умножаешь дробную часть на 0,6 и берешь первые две цифры - это количество минут. Отбрасываешь их и проделывая тоже самое второй раз получаешь секунды.

Вроде я не ошибся
2
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
07.11.2009, 18:02
посоветуйте как вычислить максимально точное pi
в VS 2008 в math.h есть строка:
C++
1
#define M_PI       3.14159265358979323846
Если у Вашего компилятора нет значения pi в math.h, то можете просто написать эту строку в начале кода и пользоваться M_PI в самом коде
1
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
07.11.2009, 18:15  [ТС]
спасибо M128K145, и valeriikozlov!

По поводу дробной части - умножаешь дробную часть на 0,6 и берешь первые две цифры - это количество минут. Отбрасываешь их и проделывая тоже самое второй раз получаешь секунды.
есть вопрос - ведь дробная часть может быть разной в ответе, в зависимости от введенного пользователем числа, значит, как я понимаю надо округлить дробное число до 4-х знаков после запятой, подскажите, есть ли такая функция в C++? В Паскале есть - это я точно помню, значит и в С++ должна быть.

Заранее спасибо
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.11.2009, 18:26
selevit, для вычисления округлять не надо. Делай так:
есть дробная часть(float dr), минуты (int min) и секунды(int sec).
C++
1
2
3
4
5
6
dr *= 60; //т.е.
//dr *= 0.6; для получение минут в дробной части и
//dr *= 100; для получение минут в целой части
min = (int)dr; //отбрасываем всю дробную часть
dr *= 60; //тоже самое что и для минут
sec = (int)dr; // ----//----
2
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
07.11.2009, 18:42  [ТС]
извиняюсь, вопрос - как найти дробную часть числа?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.11.2009, 19:33
C++
1
2
double result = 180/pi*rad;
double dr = result - (int)result;
1
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
07.11.2009, 20:10  [ТС]
Спасибо всем, особенно M128K145! вот что примерно получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <math.h> // Для floor(grad).
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double rad;
    cout<<"Введите значение угла в радианах: "<<endl;
    cin>>rad;
    const double pi = 3.1415926535897932384626433832795;
    double grad = 180/pi*rad;
    double dr = grad - (int)grad;
    dr *= 60;
    int min = int(dr);
    dr *= 60;
    int sec = int(dr);
    cout<<"Значение угла в градусах = "<<floor(grad)<<" Градусов "<<min<<" Минут "<<sec<<" Секунд. "<<endl;;
 
 
}
Все работает правильно, но есть небольшая проблемка - что почему то все число вместе с дробной частью никогда не превышает 6 знаков при выводе, т.е. к примеру такой код

C++
1
2
3
    double test;
    cin>>test;// Если ввести к примеру 1.1234567890
    cout<<test;// То выведется только 1.12345
при вводе может иметь сколько угодно знаков, а выводится только первые 6 цифр.
из за этого точность вычисления страдает и секунды вычисляются несовсем правильно.

подскажите пожалуйста, что за парадокс?

Заранее спасибо
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.11.2009, 20:28
selevit, точнее даже так
C++
1
2
3
4
    double dr = grad - (int)grad;
    dr *= 3600;
    int min = dr / 60;
    int sec = dr - min * 60;
Если посмотреть в дебаггере, то pi = 3.1415926535897931
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.11.2009, 10:00
http://ru.wikipedia.org/wiki/%D0%9F%D0%B8
0
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
08.11.2009, 13:55  [ТС]
спасибо, читал уже
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.11.2009, 02:31
там есть метод итераций каких-то, вроде несложный
1
Свободный художник
597 / 30 / 3
Регистрация: 09.10.2009
Сообщений: 214
13.11.2009, 18:36
точное значение пи... пожалуйста - p(пи) = asin(double(1))*2
ведь это один из вариантов нахождения значения пи, не так ли?)). Пропишешь вот такую заморочку перед формулой и в саму формулу по вычислению того, что тебе нужно смело вставляй "p" и все будет)). Попробуй,
selevit, и не забудь сказать спасибо!
1
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
13.11.2009, 18:41  [ТС]
точное значение пи... пожалуйста
Adalina - если тебе известно, пи - иррациональное число, поэтому точного значени принимать не может

спасибо
0
Свободный художник
597 / 30 / 3
Регистрация: 09.10.2009
Сообщений: 214
13.11.2009, 18:50
Цитата Сообщение от valeriikozlov Посмотреть сообщение
1
#define M_PI 3.14159265358979323846
кстати, за вот такую проделку учителЪ по основам программирования долго иронизировал в мою сторону... я тоже сначала искала легкие пути

Добавлено через 2 минуты
selevit, Ты просил "максимально точное" значение пи, Серег Так что не цепляйся к словам.



Добавлено через 4 минуты
selevit, ну ладно... Извини, что спалила твое имя
0
 Аватар для selevit
91 / 77 / 6
Регистрация: 08.10.2008
Сообщений: 296
13.11.2009, 19:18  [ТС]
selevit, ну ладно... Извини, что спалила твое имя
Adalina, не понимаю о чем Вы? что значит спалила, если оно есть в моем профиле?
0
Свободный художник
597 / 30 / 3
Регистрация: 09.10.2009
Сообщений: 214
14.11.2009, 22:27
Серег, сейчас и фамилию спалю вместе с возрастом, так что не нервируй меня
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
14.11.2009, 23:15
selevit, Adalina, есть все же ЛС
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.11.2009, 23:37
Цитата Сообщение от Adalina Посмотреть сообщение
точное значение пи... пожалуйста - p(пи) = asin(double(1))*2
На всякий случай сообщаю: сначало нашли p(пи) (и то не окончательно, до сих пор ищут все с большей точностью). А после этого (и в ЭВМ тоже так устроено) вычисляют sin(1), с помощью уже известного p(пи).
Так что этот Ваш вариант нахождения "точного значения пи" - он на самом деле не вариант вычисления, а нетипичный вариант использования уже заложенного в ЭВМ значения p(пи).
0
Свободный художник
597 / 30 / 3
Регистрация: 09.10.2009
Сообщений: 214
16.11.2009, 17:24
valeriikozlov, насчет "точного значения" я вроде поправилась... Так что, прошу Вас, не будьте вторым, кто указывает на одну и ту же ошибку)) Ну или сразу расстреляйте меня за недописанное "максимально"......
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2009, 17:24
Помогаю со студенческими работами здесь

Перевод величин из радиан в градусы, минуты, секунды
Когда вводим 1 радиан, должно быть 57 градусов, 17 минут, 45 секунд. Помогите исправить ошибки. #include &lt;stdio.h&gt; #include...

Перевод угла в формат Градусы Минуты Секунды
Пиши прогу на Обратную геодезическую задачу проблема в том что нужно тангенс угла перевести в ыормат Грудусы Минуты Секунды. например у...

Перевести радианную меру угла в градусы, минуты и секунды.
Перевести радианную меру угла в градусы, минуты и секунды.

Вычисление синуса угла (sin) и преобразование радиан в градусы и обратно
Как можно данную задачу упростить? import java.text.NumberFormat; public class MasSin { public static void main(String args) {...

Написать программу, переводящую размер угла из радиан в градусы с использованием дружественных функций
Ребята, помогите пожалуйста в написании программы, практики вообще никакой с дружественными функциями, хотя условие достаточно простое. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru