繁体   English   中英

C ++错误:“ int”之前预期的主表达式?

[英]C++ error: expected primary-expression before 'int'?

更新:这样我就可以编译并运行该程序,它似乎可以工作! 但是,法官评分值2.3的变量以奇数形式存储,并且使计算中断。 当我输入2.3时,商店值为2.299999999998-为什么这样做? calcScore或最低和最高功能可能有误,因为在输入分数2.3-5.5-5.5-5.5-8.5时最终分数降低了0.3,有什么想法吗?

// file name starSearch.cpp
// author: SK
// last modified: 03/19/2012

#include <iostream> 
#include <iomanip>
using namespace std;

//function prototypes
void getJudgeData(double &);
void calcScore(double, double, double, double, double);
int findLowest(double, double, double, double, double);
int findHighest(double, double, double, double, double);

//declare variables
double score1;
double score2;
double score3;
double score4;
double score5;

int main()
{
    getJudgeData(score1); //Call getJudgeData for first judge score
    getJudgeData(score2); //Call getJudgeData for second judge score
    getJudgeData(score3); //Call getJudgeData for third judge score 
    getJudgeData(score4); //Call getJudgeData for fourth judge score
    getJudgeData(score5); //Call getJudgeData for fifth judge score
    calcScore(score1, score2, score3, score4, score5);    //calculate contestant score
    return 0; 
}

//
//Begin function prototypes definitions
//

//defines calcScore.
void calcScore(double score1, double score2, double score3, double score4, double score5)
{
    double total = (score1 + score2 + score3 + score4 + score5 - findLowest(score1, score2, score3, score4, score5) - findHighest(score1, score2, score3, score4, score5)) / 3;
    cout << setprecision(2);
    cout << "The contestant's final score is: " << total << endl;
}

//defines getJudgeData. this function asks each judge for their score.
void getJudgeData(double &score)
{
    cout << "Judge, enter the contestant's score: ";
    cin >> score;
    if (score < 0 || score > 10) //validate score between 0-10, else display error msg
    {
    cout << "ERROR: Enter a value in the range 0-10.\n";
    return getJudgeData(score);
    }
    return;
}

//defines findLowest. this function returns the lowest score entered.
int findLowest(double score1, double score2, double score3, double score4, double score5)
{
    if (score1 < score2 && score1 < score3 && score1 < score4 && score1 < score5)
    {
        return score1;
    }

    else if (score2 < score1 && score2 < score3 && score2 < score4 && score2 < score5)
    {   
        return score2;
    }

    else if (score3 < score1 && score3 < score2 && score3 < score4 && score3 < score5)
    {
        return score3;
    }

    else if (score4 < score1 && score4 < score2 && score4 < score3 && score4 < score5)
    {
        return score4;
    }

    else if (score5 < score1 && score5 < score2 && score5 < score3 && score5 < score4)
    {
        return score5;
    }
}

//defines findHighest. this functio returns the highest score entered.
int findHighest(double score1, double score2, double score3, double score4, double score5)
{
    if (score1 > score2 && score1 > score3 && score1 > score4 && score1 > score5)
    {
        return score1;
    }

    else if (score2 > score1 && score2 > score3 && score3 > score4 && score3 > score5)
    {   
        return score2;
    }

    else if (score3 > score1 && score3 > score2 && score3 > score4 && score3 > score5)
    {
        return score3;
    }

    else if (score4 > score1 && score4 > score2 && score4 > score3 && score4 > score5)
    {
        return score4;
    }

    else if (score5 > score1 && score5 > score2 && score5 > score3 && score5 > score4)
    {
        return score5;
    }
}

原版的:

我在第39行上遇到编译器错误,其中我的代数表达式是用整数3编写的。我只是想不出如何对五个分数取平均并删除最低和最高分数。 确定最高和最低的功能似乎是正确的。.请帮助。

谢谢。

*// file name starSearch.cpp
// author: SK
// last modified: 03/19/2012

#include <iostream> 
using namespace std;

//function prototypes
void getJudgeData(double);
void calcScore();
int findLowest();
int findHighest();

//declare variables
double score1;
double score2;
double score3;
double score4;
double score5;

int main()
{
    getJudgeData(score1); //Call getJudgeData for first judge score
    getJudgeData(score2); //Call getJudgeData for second judge score
    getJudgeData(score3); //Call getJudgeData for third judge score 
    getJudgeData(score4); //Call getJudgeData for fourth judge score
    getJudgeData(score5); //Call getJudgeData for fifth judge score
    calcScore();    //calculate contestant score
    return 0; 
}

//
//Begin funtion prototypes definitions
//

//defines calcScore.
void calcScore(double score1, double score2, double score3, double score4, double score5)
{
    double total = score1 + score2 + score3 + score4 + score5 - int findLowest(a, b, c, d, e) - intfindHighest(a, b, c, d, e) / 3;
    cout << "The contestant's final score is: " << total << endl;
}

//defines getJudgeData. this function asks each judge for their score.
void getJudgeData(double score)
{
    cout << "Judge, enter the contestant's score: ";
    cin >> score;
    if (score < 0 || score > 10) //validate score between 0-10, else display error msg
    {
    cout << "ERROR: Enter a value in the range 0-10: ";
    cin >> score;
    }
    else
    return;
}

//defines findLowest. this function returns the lowest score entered.
int findLowest(double score1, double score2, double score3, double score4, double score5)
{
    if (score1 < score2, score3, score4, score5)
    {
        return score1;
    }

    else if (score2 < score1, score3, score4, score5)
    {   
        return score2;
    }

    else if (score3 < score1, score2, score4, score5)
    {
        return score3;
    }

    else if (score4 < score1, score2, score3, score5)
    {
        return score4;
    }

    else if (score5 < score1, score2, score3, score4)
    {
        return score5;
    }
}

//defines findHighest. this functio returns the highest score entered.
int findHighest(double score1, double score2, double score3, double score4, double score5)
{
    if (score1 > score2, score3, score4, score5)
    {
        return score1;
    }

    else if (score2 > score1, score3, score4, score5)
    {   
        return score2;
    }

    else if (score3 > score1, score2, score4, score5)
    {
        return score3;
    }

    else if (score4 > score1, score2, score3, score5)
    {
        return score4;
    }

    else if (score5 > score1, score2, score3, score4)
    {
        return score5;
    }
}*

这些函数分别称为findLowestfindHighest int是它们的返回类型,调用它们时不应指定int

如果这使您感到困惑,建议您找到一本不错的初学者级C ++书籍,并阅读有关函数声明和调用的信息。

除了先前的答案之外,您的getJudgeData函数也非常损坏。 它需要双重引用 ,否则您将永远不会修改原始变量,并且该函数毫无价值。 此外,您无法防止法官两次输入较差的分数。

void getJudgeData(double& score)
{
    cout << "Judge, enter the contestant's score: ";
    cin >> score;
    if (score < 0 || score > 10) //validate score between 0-10, else display error msg
    {
        cout << "ERROR: Enter a value in the range 0-10: ";
        return getJudgeData(score);
    }
    return;
}

这种简单的递归可以保护您免受每次输入错误数据的影响,并且还可以正确修改原始变量,因为您的代码似乎像预期的那样编写。

问题是你的线:

double total = score1 + score2 + score3 + score4 + score5 - int findLowest(a, b, c, d, e) - intfindHighest(a, b, c, d, e) / 3;

您不应在内联中包含int标识符。 编译器已经知道您的函数返回一个int。 改写

double total = score1 + score2 + score3 + score4 + score5 - findLowest(a, b, c, d, e) - findHighest(a, b, c, d, e) / 3;

正如其他人指出的那样,您可能希望将其转换为两倍。 在这种情况下,您会这样做。

double total = score1 + score2 + score3 + score4 + score5 - (double)findLowest(a, b, c, d, e) - (double)findHighest(a, b, c, d, e) / 3;

不过,这实际上不会计算平均值,因此您应该使用括号来强制执行顺序或操作。

double total = (score1 + score2 + score3 + score4 + score5 - (double)findLowest(a, b, c, d, e) - (double)findHighest(a, b, c, d, e)) / 3;

除了Chowlett提供的答案外,您还需要重新考虑在findLowest和findHighest中使用逗号运算符。

例如,您在findHighest中的行

if (score1 > score2, score3, score4, score5)

基本上与

if (score5)

这似乎不是您想要的。

您要在那儿表演吗? 这是用括号(double)来完成的,虽然我不确定在那里是否需要使用double,但我也想假设您也想使用double。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM