2011-05-29 30 views
0

我創建了一個函數來確定cableBoxFeesTotal的值,然後我將它返回給本地變量cableBoxFeesTotal。當我嘗試在函數外部使用cableBoxFeesTotal的值時,值爲0.00,而不是函數返回的值。我一直在爲此工作好幾天,似乎無法弄清楚我做錯了什麼。請告訴我如何解決這個問題。謝謝!我的函數不會將值返回給C++中的本地變量

我不想發佈整個代碼..這是作業,但我沒有添加下面的兩個部分。

#include <iostream> 
    #include <string> 
    #include <cctype> 
    #include <iomanip> 
    #include <cmath> 

    using namespace std; 

    const double BASIC_CABLE = 43.00; 
    const double PREMIUM_CABLE = 58.00; 
    const double BASIC_BOX = 7.50; 
    const double PREMIUM_BOX = 11.25; 
    const double PREMIUM_CHANNEL_FEE = 9.99; 
    const double EMPLOYEE_DISCOUNT_AMOUNT = .14; 

    double feeFunction (int cableBoxes, double serviceLevel, double cableBoxFeesTotal, double BASIC_BOX, double PREMIUM_BOX, char B, char P) 

    {  
       if (cableBoxes > 2 && serviceLevel == 'B') 
       {   
        cableBoxFeesTotal = ((cableBoxes - 2) * BASIC_BOX); 
        cout << "Cable Box Fees: " << setw(15) << cableBoxFeesTotal << endl; 
       } 
       else if (cableBoxes > 2 && serviceLevel == 'P') 
       { 
        cableBoxFeesTotal = ((cableBoxes - 2) * PREMIUM_BOX); 
        cout << "Cable Box Fees: " << setw(15) << cableBoxFeesTotal << endl; 
       } 
       return (cableBoxFeesTotal); 
    } 

    int main() 
    { 

     string employee; 

     bool hasPremium; 

     char H; 
     char B; 
     char P; 
     char premiumChannel; 
     char serviceLevel; 

     int cableBoxes = 0 ; 

     double customerID; 
     double monthlyRateTotal = 0.00; 
     double cableBoxFeesTotal = 0.00; 
     double premiumChannelTotal = 0.00; 
     double subtotal = 0.00;`enter code here` 
     double employeeDiscount = 0.00; 
     double total = 0.00; 

     feeFunction (cableBoxes, serviceLevel, cableBoxFeesTotal, BASIC_BOX, PREMIUM_BOX, B, P); 
     cout << cableBoxFeesTotal << endl; 

     if (hasPremium == true) 
     { 
       subtotal = (cableBoxFeesTotal + monthlyRateTotal + PREMIUM_CHANNEL_FEE); 
       cout << "Subtotal:" << setw(15) << subtotal << endl; 
     } 
     else if (hasPremium == false) 
     { 
       subtotal = (monthlyRateTotal + cableBoxFeesTotal); 
       cout << "Subtotal:" << setw(15) << subtotal << endl; 
     } 
    } 
+3

您的代碼段似乎損壞了...... – 2011-05-29 14:10:26

+0

顯然,您在代碼中缺少對函數「feeFunction」的函數調用。 – cpx 2011-05-29 14:15:18

+0

這是功課嗎?如果是這樣,請標記爲這樣。 – 2011-05-29 14:17:00

回答

3

你實際上並沒有在任何地方調用函數,所以目前還不清楚你認爲應該發生什麼。此外,請注意,方法中的參數cableBoxFeesTotalmain()中的局部變量cableBoxFeesTotal是兩個單獨的無關變量。你需要做這樣的事情在main():(這裏我只是做了值的參數,因爲我不知道你打算什麼)

cableBoxFeesTotal = feeFunction (1, 1.0, 0, 1.0, 1.0, 'b', 'p'); 

稱之爲回顧過去的代碼,我請參閱該函數的大多數參數的名稱在其他位置複製全局或局部變量的名稱;我懷疑你只是不知道參數是如何工作的,對嗎?在這種情況下,你需要回到你的課本並做更多的閱讀。

+0

這是我完成的第二個用戶功能。教練讓我們這樣做,我現在會尋找一種不同的方式去做。謝謝 – Namawen 2011-05-29 14:44:40

0

你能告訴我代碼爲int main(),在這段代碼中,我沒有看到你在哪裏使用函數feeFunction()。如果我還記得,要返回一個值,我們只需使用return cableBoxFeesTotal;。首先讓我重新檢查C++語法,然後回來一個更具體的答案來解決這個問題。同時,請轉儲完整的代碼。

首先你的功能用法是錯誤的。當通過函數返回一個值時,在調用時 - 您需要將該值放入變量中。

使其爲:

double totalFeeFunction = feeFunction (cableBoxes, serviceLevel, cableBoxFeesTotal, BASIC_BOX, PREMIUM_BOX, B, P); 

只有這樣,如果你打電話給你的功能feeFunction與您在主定義的參數,你可以用價值回報您的主要用途是在totalFeeFunction

+0

我發佈了我調用該函數的部分,以及它之後的代碼,我需要函數中的值來計算小計。 – Namawen 2011-05-29 14:43:08

0

cableBoxes總是< 2.由於您的功能的計算部分檢查看到它cableBoxes > 2它總是跳過計算並返回原始分配到cableBoxFeesTotal的值,即0.00

此外,您將全局變量定義爲const,因此即使計算髮生在函數中,也不會更改您定義的全局值。

目前還不清楚你正在計算什麼等......但有了更多的信息,我可以嘗試告訴你如何解決你的代碼。現在只要說明一下,確保你在函數中的條件正確地檢查了事情。

+0

cableBoxes稍後由用戶輸入設置,所以它至少是2.我不需要全局值改變,只需要局部變量cableBoxFeesTotal。在調用該函數後,我需要將該值存儲在本地變量中,以用於下一部分代碼,以確定小計。我只是無法將它存儲在本地變量中。 – Namawen 2011-05-29 14:40:31

+0

@Namawen,你應該確保事實反映在你發佈的代碼中。至於解決方案,您不使用賦值運算符'='將函數返回的值分配給main中的任何變量。 – Jordan 2011-05-29 14:45:57

相關問題