2011-05-29 57 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