2017-02-28 53 views
0

您好,我在我的C++程序(畢達哥拉斯定理)之間的某個地方將問題返回給函數,並使用cout獲取輸出。(C++)返回和函數輸出之間的某處出錯

例如,如果我將a設置爲3,b設置爲0,並且c設置爲2,則運行程序並觀察我的變量時,輸出爲0或nan。這裏是關於變量的更多信息:

pyth_b_1 - (error)在當前上下文中不可用! P_T() - (錯誤){浮動(浮動,浮動,浮動)} 0x4014ad

代碼:

cout<<"Set one value 0 to get answer for that variable \n"; 
     cout<<"Enter number or 0 for 'a': "; 
     cin>>a; 
     cout<<"Enter number or 0 for 'b': "; 
     cin>>b; 
     cout<<"Enter number or 0 for 'c': "; 
     cin>>c; 
     cout<<"You'r answer = "<<p_t(a, b, c)<<endl; 

代碼:

float p_t(float a,float b,float c){ 

    if(a == 0 && b != 0 && c != 0){ 
    // 0 equals nothing for parameters 
    cout<<"You chose to find a"<<endl; 
    float pyth_c = (pow(c, 2)) - (pow(b, 2)); 
    float pyth_a = sqrt(pyth_c); 
    return pyth_a; 
    } 
    else if(a != 0 && b == 0 && c != 0){ 
    float pyth_c_1 = (pow(c, 2)) - (pow(a, 2)); 
    float pyth_b_1 = sqrt(pyth_c_1); 
    return pyth_b_1; 
    } 
    else if(a != 0 && b != 0 && c == 0){ 
    float pyth_a_2 = (pow(a, 2)) - (pow(b, 2)); 
    return pyth_a_2; 
    } 

    } 
+0

在情況1中,如果'c' <'b'那麼'pyth_c'將是負數。然後你嘗試取其平方根。在所有其他情況下也是如此。除了情況3缺少平方根呼叫。這是精簡如何使用調試器的完美程序。 –

+1

我建議學習使用調試器。這將使編程無限輕鬆。 – dandan78

回答

1

那麼,根據你的代碼,當a == 3,b == 0,c == 2,我們得到:pyth_c = pow(2, 2) - pow(3, 2),什麼給4 - 9 == -5。你不能取那個負數的平方根(至少是實數)。

+0

非常感謝。我重寫了我的代碼,只允許正數,如果不是,則重新啓動程序。再次感謝。 – laquishabonquiquithe3rd