2014-09-29 78 views
-3

到目前为止,除了函数Pelly之外,我的代码都能正常工作。它不会返回AdjustedGross,就像它假设的那样。即时通讯非常确定数学是正确的,我认为问题是如何调用函数。我不太擅长功能。任何帮助将不胜感激。函数调用错误

#include <iostream> 
using namespace std; 

int main() 
{ 
    double Federal = 0, PellGrant = 5730, AdjustedGross = 0, Total = 0; 
    int YesNo; 
    int const StaffordLoan = 9500; 

    cout << "Let me forecast your FAFSA" << endl; 
    cout << "Enter your adjusted Gross income: " << endl; cin >> AdjustedGross; 

    if (AdjustedGross >= 30000) 
    { 
     cout << "Sorry, your income is too high for this forecaster"; 
     return 0; 
    } 

    cout << "Can someone claim you as a dependent? [1 = yes/0 = no]: " << endl; cin >> YesNo; 
    if (YesNo == 1) 
    { 
     PellGrant -= 750; 
    } 

    Federal = 1465; 
    if (AdjustedGross >= 19000) 
    { 
     cout << "I'm sorry, but the Work-Study Award is not available to you" << endl; 
     Federal = 0; 
    } 

    double Pelly(AdjustedGross); 

    Total = Federal + StaffordLoan + PellGrant; 

    if (Federal != 0) 
    { 
     cout << "Your Work-Study Award (if available): " << Federal << endl; 
    } 
    cout << "Your Stafford Loan award (if needed): " << StaffordLoan << endl; 
    cout << "Your Pell Grant: " << PellGrant << endl; 

    return (0); 
} 

double Pelly(double x) 
{ 
    // x is AdjustedGross 
    if ((x > 12000) && (x < 20000)) // make sure adjusted gross is bettween 12000 & 20000 
    { 
     double a = x/1000; // for every 1000 in adjusted, subtract 400 
      a *= 400; 
     x -= a; 
    } 

    if (x > 20000) // check adjusted > 20000 
    { 
     double a = x/1000; // for every 1000 in adjusted, subtract 500 
     a *= 500; 
     x -= a; 
    } 
    return x; 
} 
+5

你实际上并没有在任何地方调用该函数。更好地阅读一本好的C++入门书。 – juanchopanza 2014-09-29 20:10:18

回答

1

品牌:

double Pelly(AdjustedGross); 

到:

double foo = Pelly(AdjustedGross); 

存储值从Pellydouble变量foo返回。 使用的功能Pelly向前声明,换句话说,这样声明main前:

double Pelly(double); 
1

您需要实际分配功能给一个变量的结果,然后使用这个结果。所以,你应该这样做:

double pellyResult = Pelly(AdjustedGross); 

你也应该确保你宣布你的功能上述主:

double pellyResult(double); 
1

你的方法的签名应该要么是

void Pelly(double& AdjustedGross) 

即没有回报的值(这样,AdjustedGross通过引用传递并直接在函数内部修改,调用该函数将会是

Pelly(AdjustedGross); 

或您的函数调用应该是

double foo = Pelly(AdjustedGross) 

在其他的答案说。