将多个参数传递给函数C ++

时间:2015-10-24 00:02:12

标签: c++

我的第三个功能wper不会识别第一个和第二个的值。 Xcode声明,每次我引用wper时,它总是会评估为true,而不是百分比。目标是从第一个和第二个函数中获取值,计算第三个函数中的百分比,并将其显示在main函数中。任何帮助将不胜感激

double wins();
double loses();

double wper();

int main(int argc, const char * argv[]) {

    wins();

    loses();

    wper();

    cout << "Your team's winning percentage is " << setprecision(2) << fixed << wper << "%"<< endl;
};


double wins(){

    double wins;

    cout << "How many games did your team win this season?" << endl;
    cin >> wins;

    return wins;
};

double loses() {

    double loses;

    cout << "How many games did your team lose this season?" << endl;
    cin >> loses;

    return loses;
};

double wper(double wins, double loses){

    double per = (wins / (wins + loses));

    return per;
};

2 个答案:

答案 0 :(得分:1)

不要粗鲁,但我认为你是C ++的新手?

您应该将函数结果/返回值存储为变量,然后将它们作为参数传递给wper(double, double)

以下是您的代码的修订版本,其中包含一些注释:

#include <iostream>

// Forward declare functions:
double wins();
double losses();
double wper(double wins, double losses);

using namespace std;

int main(int argc, const char * argv[]) {
    // Get input:
    double dWinCount = wins();
    double dLossCount = losses();

    // Calculate win percent:
    double dWinPercent = wper(dWinCount, dLossCount) * 100; // x100 to make it a percent

    // Set the double output to be 2 decimal places fixed:
    cout << fixed;
    cout << setpercision(2);

    cout << "Your team's winning percentage is " << dWinPercent << "%"<< endl;
}


double wins(){

    double wins;

    cout << "How many games did your team win this season?" << endl;
    cin >> wins;

    return wins;
}

double losses() {

    double losses;

    cout << "How many games did your team lose this season?" << endl;
    cin >> losses;

    return losses;
}

double wper(double wins, double losses){
    double per = (wins / (wins + losses));
    return per;
}

另外,正如您对问题的评论和其他答案所述,使用double有点不必要。 float足以满足您的需求,因为您不需要在此处高度精确。与double(4字节)相比,float在内存中占用的字节数(8字节)也是两倍(因此为什么double可以比float更精确)。在这种大小的程序中,这种额外的内存消耗可以忽略不计,但是通过使用适当的数据类型来提高内存效率在大型项目中非常重要,因此保持较小的内存占用是一种很好的做法。

答案 1 :(得分:0)

错误可能在于你对wper函数的前向声明。

你应该有正确的前瞻性声明,而不是你现在拥有的东西:

double wper(double wins, double loses);

但是我建议您尝试稍微清理一下代码,并按照评论中的建议考虑使用float而不是double来表示百分比。

相关问题