2015-04-23 88 views
0

我已經編寫了兩個函數來將緯度和經度從組件Degrees,Minutes和Seconds中來回轉換。就decToDMS()方法而言,數學看起來沒什麼問題,只是我的積極/消極信號在我的分鐘和秒鐘都沒有。無法將緯度/長度轉換爲DMS並返回

對於DMStoDec,我只是幾乎沒有在我的計算中,我不太確定錯誤在哪裏。這裏既是代碼示例:

int DMStoDec(double *deg, int degrees, int minutes, double seconds) { 
    //test for invalid inputs 
    if (deg == NULL) { 
     return 1; 
    } 
    if (*deg < -180 || *deg > 180) { 
     return 1; 
    } 
    // Formula is degrees = degrees + minutes/60 + seconds/3600; 
    double m; 
    double s; 
    double d; 
    d = (double) degrees; 
    m = (double) minutes/60; 
    s = (double) seconds/3600; 

    *deg = d + m + s; 
    printf("DMS to Dec is %lf\n", *deg); 

    return 0; 
} 

int decToDMSint *degrees, int *minutes, double *seconds, double deg) { 
    if (degrees == NULL || minutes == NULL || seconds == NULL) { 
     return 1; 
    } 
    if (deg < -180 || deg > 180) { 
     return 1; 
    } 
    *degrees = deg; 
    deg = deg - trunc(deg); 
    // multiply the decimal by 60; 
    deg *= 60; 
    *minutes = deg; 
    // Drop the integer 
    deg = deg - trunc(deg); 
    deg *= 60; 
    *seconds = deg; 

    return 0; 
} 

回答

1

如何:

*degrees = deg; 
deg = deg - trunc(deg); 

// minutes and seconds are >= 0 
if (deg < 0) 
    deg *= -1; 

// multiply the decimal by 60 
deg *= 60; 
*minutes = deg; 
// Drop the integer 
deg = deg - trunc(deg); 
deg *= 60; 
*seconds = deg; 
+0

這並獲得成功!謝謝你的幫助。 – N0ug4t