2013-06-12 26 views
0

我一直在試圖通過式V來計算衛星的速度= -1/2 * GMM/R 用C++它編譯成功,但得到的所有輸入後它模具沒有顯示結果,並終止突然。我試圖通過重新編寫代碼來解決問題,但都是徒勞的。計算衛星速度用C++,邏輯錯誤

#include <iostream> 
using namespace std ; 
#define G 6.672 

float calculate(float , float , float) ; 

int main(void) 
{ 
    float aa ; 
    aa = (1/2) ; 
    cout << aa ; 
    cout << "Total energy of satellite " << endl ; 
float ene ,m , M , r ; 
cout << "Enter masses and radius " << endl ; 
cin >> m ; 
cout << "2nd mass" << endl ; 
cin >> M ; 
cout << "radius " ; 
cin >> r ; 

ene = calculate(m ,M , r); 
cout << ene ; 

return 0 ; 
system("PAUSE") ; 
} 
float calculate(float a , float b , float c) 
{ 
     float result ; 
     result = 0.5 * (G * a * b)/c ; 
     return result; 
} 
+0

您是否嘗試打印M,M和R?如果r是0,你會得到一個除法0. PS:可怕的變量命名約定m和M?我知道這是可能的,但它使得難以閱讀/維護代碼。 – John3136

+3

它終止,因爲你有返回後的系統(「暫停」)。它永遠不會被調用,程序在打印輸出後終止。 – arne

+0

作爲一個附註,你的行'aa =(1/2)'相當於'aa = 0',因爲1/2是一個整數除法,只有在這之後你才能得到浮點數。見(http://stackoverflow.com/questions/8906722/c-programming-division)。 – mars

回答

0

system("PAUSE") ;因爲它return 0 ;其立即退出該方法之後發生沒有達到。

然而,你應該避免在有利於阻止使用system("PAUSE"),等待輸入進來作爲下面的鏈接提示:http://www.gidnetwork.com/b-61.html

+0

您也可以添加有關檢查輸入操作是否存在可能的錯誤。 –

+0

非常感謝你們那裏的好人 –