C++错误:在"int"之前有预期的主表达式?
C++ error: expected primary-expression before 'int'?
更新:所以我能够编译并运行这个程序,它似乎可以工作!然而,评判得分值2.3-的变量以一种奇怪的方式存储,并且正在放弃计算。当我输入2.3时,存储值是2.299999999998——为什么会这样?calcScore或最低和最高函数可能有错误,因为输入分数时最终分数相差0.3,2.3-5.5-5.5-8.5-有什么想法吗?
// 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;
}
}*
函数分别称为findLowest
和findHighest
。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;
}
这种简单的递归将保护您免受法官每次输入错误数据的影响,而且它还将正确地修改原始变量,就像您的代码编写时所期望的那样。
除了Chowlett提供的答案外,您还需要重新考虑在findLowest和findHighest中使用逗号运算符。
例如,findHighest 中的行
if (score1 > score2, score3, score4, score5)
基本上与完全相同
if (score5)
这似乎不是你想要的。
问题出在您的线路上:
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;
您想在那里执行强制转换吗?这是用括号(double)完成的,我认为double也是你想要的,尽管我不确定那里是否需要它。
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 标记之前预期主表达式'('错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- C++初学者错误:主要表达式错误
- 代数树表达式C++错误:未解析的外部符号"Public:_thiscall AlgebraicTreeExpression::~AlgebraicTreeExpression(void) ..."
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 提升正则表达式错误:未初始化的提升::match_results
- C++比较表达式错误
- C++ "主表达式"错误
- C++ 正则表达式错误(未处理的异常)
- 'this'不能用于常量表达式错误 (C++)
- 代码块引发有关for_each的预期主表达式错误
- Boost Regex中的命名子表达式错误
- C++之前的主要表达式错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- 理解常量表达式错误
- 成员函数和预期的主表达式错误
- Xcode中应有表达式错误