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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
V-Gub
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 21
#1

Преобразовать координаты из десятичного представления в градусы минуты секунды - C++

09.09.2013, 12:46. Просмотров 3475. Ответов 6
Метки нет (Все метки)

Добрый день!
Пишу программку, очень маленькую, но мне она нужна для работы, собственно всегда то что мне нужно пересчитывал в Excel'е, но так как начал изучение С++ решил попробовать написать её.
Суть в чём! Я получаю морские координаты, но в градусах и десятых градусов в таком виде N 40,1234, 39.1234 и такие же по E, мне их нужно перевести в грудусы минуты и десятые минут т.е. WGS-84 из N 40,1234 и получаю N 40°7.40, то же самое и с долготой, т.е. просто отбрасываем целую часть (40), а дробную умножаем на 60 и потом записываем ввиде 40°07.40. В экселе это всё выглядит просто функция ОТБР и т.д., а в билдере С++ у меня не получается.

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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <cmath> // - это я добавил для функции floor
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x;
float x1;
float y;
x = StrToFloat(Edit1->Text);
//x1= floor(x);  - ругается на это!!!!
y = x1*60;
Label1->Caption = "N " + FloatToStrF(y,ffGeneral,7,2) + "°"; // - здесь как-то записать что к чему складывается... N + x + ° + x1
}
Ну в общем подскажите кто, что может?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 12:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать координаты из десятичного представления в градусы минуты секунды (C++):

Перевод угла из радиан в градусы, минуты и секунды - C++
Всем доброго времени суток, тут написал программу, которая переводит значение угла, заданное в радианах в градусы с десятичной дробной...

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

Преобразовать период времени p, заданный в секундах (p<=86400) в часы, минуты и секунды, результат вывести в виде чч:мм:сс . - C++
Преобразовать период времени p, заданный в секундах (p&lt;=86400) в часы, минуты и секунды, результат вывести в виде чч:мм:сс . Для...

Как перевести секунды в часы, минуты и секунды - C++
Помогите составить программу, которая будет переводить секунды (произвольное целое число) в часы, минуты и секунды.

Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды. - C++
1. Составить программу на языке Си , используя функций прерывания 21h. Определить текущий день недели, год, месяц, число, а также текущее...

Перевод из секунд в часы, минуты, секунды - C++
Видел я тут тучу вариантов решения данной задачи. Но они все не подходят. Нужно решить следующую задачу: На выходе должно...

6
vxg
Модератор
3174 / 1977 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
09.09.2013, 12:59 #2
C++
1
2
3
double x; //тут градусы с запятой
double y = int(x); //тут целые градусы
double z = (x - y) * 60; //тут минуты с запятой
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.09.2013, 13:03 #3
Дробную\целую часть можно получать с помощью стандартной функции http://www.cplusplus.com/reference/cmath/modf/
1
V-Gub
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 21
09.09.2013, 13:33  [ТС] #4
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <cmath>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x; //тут градусы с запятой
double y = int(x); //тут целые градусы
double z = (x - y) * 60; //тут минуты с запятой
double e;
x = StrToFloat(Edit1->Text);
Label1->Caption = "N " + FloatToStrF(y,ffGeneral,7,3) + "°" + FloatToStrF(z,ffGeneral,7,3);
}
//---------------------------------------------------------------------------
 
 
// x = 40.1234
// y = 40
// z = (40.1234-40)*60; z = 0.1234*60; z = 7.404
// конечный результат должен иметь вид N 40°7.404
// а получается не то :  N 0°2.536585E-305 , т.е. y = 0.
Что я упустил???
0
vxg
Модератор
3174 / 1977 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
09.09.2013, 13:41 #5
Цитата Сообщение от V-Gub Посмотреть сообщение
Что я упустил???
как бы даже неудобно говорить. вы упустили x = 40.1234)
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
09.09.2013, 13:42 #6
Цитата Сообщение от V-Gub Посмотреть сообщение
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <cmath>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x; //тут градусы с запятой
double y = int(x); //тут целые градусы
double z = (x - y) * 60; //тут минуты с запятой
double e;
x = StrToFloat(Edit1->Text);
Label1->Caption = "N " + FloatToStrF(y,ffGeneral,7,3) + "°" + FloatToStrF(z,ffGeneral,7,3);
}
//---------------------------------------------------------------------------
 
 
// x = 40.1234
// y = 40
// z = (40.1234-40)*60; z = 0.1234*60; z = 7.404
// конечный результат должен иметь вид N 40°7.404
// а получается не то :  N 0°2.536585E-305 , т.е. y = 0.
Что я упустил???
Присвоить значение иксу надо перед тем, как производишь действия.
C++
1
2
double x = StrToFloat(Edit1->Text);
double y = int(x);
1
V-Gub
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 21
09.09.2013, 13:49  [ТС] #7
Цитата Сообщение от vxg Посмотреть сообщение
как бы даже неудобно говорить. вы упустили x = 40.1234)
но это же значение всегда разное. Его только в Edit вписывать потом после компиляции

Добавлено через 31 секунду
Цитата Сообщение от Nekto Посмотреть сообщение
Присвоить значение иксу надо перед тем, как производишь действия.
C++
1
2
double x = StrToFloat(Edit1->Text);
double y = int(x);
Спасибо большое! Разобрался!

Добавлено через 34 секунды
Всем спасибо!!!!
0
09.09.2013, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 13:49
Привет! Вот еще темы с ответами:

Часы, минуты, секунды - операция сложения - C++
Я пишу в программе MingwStudio по задачке 1. Исходное время задано в виде трех целых переменных: часы, минуты, секунды. Заданно некоторое...

Перевод Секунд в Минуты секунды ,Указатели - C++
вот просто программа с указателями , нужно на подобии сделать программу чтобы она переводила секунды в минуты секунды. ...

Перевод секунд в часы,минуты и секунды - C++
Тока начинаю изучать С++ по Лафоре, дошел до функций и не получается построить простенькую функцию. Нужно составить две, одна которая...

Инвертировать цифры десятичного представления числа - C++
Сделать начало концом. Пример : Ввод данных : 43210 Выход данных : 01234


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

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

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