Я пытаюсь преобразовать широту и долготу от градусов, минут, секунд до десятичной степени. Я правильно преобразовал числа, но у меня возникают проблемы с преобразованием знака. Когда я вводил цифры 39 57 21 для широты и -75 11 14 по долготе, он правильно преобразуется в (39.9558, 75.1872), но моя формула расчета знака работает неправильно. Я проверил код с помощью тонкой гребенки, но не могу найти ошибку в моей формуле. Формулу I давали, чтобы найти это: sign = (2x)/(abs (x) +1). Я включил свой код ниже. Любая помощь будет принята с благодарностью.Расчет знака в C++
#include <iomanip>
#include <cmath>
#include <iostream>
#include <string>
using namespace std;
int main()
{
int user_degrees_latitude, user_minutes_latitude, user_seconds_latitude,
user_degrees_longitude, user_minutes_longitude, user_seconds_longitude,
sign_latitude, sign_longitude;
double total_minutes_latitude, total_degrees_latitude,
total_minutes_longitude, total_degrees_longitude, final_latitude,
final_longitude;
const double sixtieth = (1./60);
cout << "Input latitude in degrees, minutes, seconds:";
cin >> user_degrees_latitude >> user_minutes_latitude >>
user_seconds_latitude;
cout << "Input longitude in degrees, minutes, seconds:";
cin >> user_degrees_longitude >> user_minutes_longitude >>
user_seconds_longitude;
total_minutes_latitude =
(user_minutes_latitude + ((sixtieth) * user_seconds_latitude));
total_degrees_latitude =
(abs(user_degrees_latitude) + ((sixtieth) * total_minutes_latitude));
total_minutes_longitude =
(user_minutes_longitude + ((sixtieth) * user_seconds_longitude));
total_degrees_longitude =
(abs(user_degrees_longitude) + ((sixtieth) * total_minutes_longitude));
sign_latitude =
(2 * (total_degrees_latitude))/((abs(total_degrees_latitude)) + 1);
sign_longitude =
(2 * (total_degrees_longitude))/((abs(total_degrees_longitude)) + 1);
final_latitude = (sign_latitude * total_degrees_latitude);
final_longitude = (sign_longitude * total_degrees_longitude);
cout << user_degrees_latitude << " deg " << user_minutes_latitude << "\' "
<< user_seconds_latitude << "\" latitude, " << user_degrees_longitude
<< " deg " << user_minutes_longitude << "\' " << user_seconds_longitude
<< "\"";
cout << " is (" << total_degrees_latitude << "," << total_degrees_longitude
<< ")" << endl;
return 0;
}
Короткая тестовая версия вместо всего кода будет приятной. – Borgleader
Ну, может быть, ваша формула неправильная? – OldProgrammer
Это в основном тот же самый код, который вы опубликовали ранее. Вы обнаружите, что использование вашего отладчика поможет вам намного больше, чем попросить SO отладить его для вас. –