Mar*_*rla 2 c++ arrays function calculator
这是我的教科书中的练习作业,用于计算分数.它需要7分,并且最高和最低.
我不认为有语法错误,但我得到一个未解决的外部符号错误.我寻找类似的问题,似乎问题可能是使用函数而不是定义它.我已经定义了所有函数,但在main或calculatecore中可能都不正确.我是c ++的新手,非常感谢您解决这个问题.谢谢
这是我在VisualStudio上遇到的错误
错误LNK2019:函数_main中引用的未解析的外部符号"float __cdecl calculateScore(float*const,int,float)"(?calculateScore @@ YAMQAMHM @ Z)
#include <iostream>
using namespace std;
void printHeader(int judges);
void enterData (float scores[], int judges, float difficulty);
float calculateScore(float scores[], const int judges, float difficulty);
int findLeast(float scores[], const int judges);
int findMax(float scores[], const int judges);
int main () {
const int judges = 7;
float scores [judges];
float difficulty = 0;
float finalscore = calculateScore(scores, judges, difficulty);
printHeader (judges);
enterData (scores, judges, difficulty); // get user input
findLeast(scores, judges); // find lowest score
findMax(scores, judges); // find highest score
calculateScore (scores, judges, difficulty); // get final score
cout << "The final score is " << finalscore << '\n';
return 0;
}
void printHeader(const int judges) {
cout << "This program calculates a divers score over" << judges << "judges";
}
void enterData(float scores[], const int judges, float difficulty) {
for (int i = 0; i < judges; i++){
cout <<"Enter score for judge " << i+1 << endl;
cin >> scores[i];
}
cout << "Enter difficulty: "<< endl;
cin >> difficulty;
}
Run Code Online (Sandbox Code Playgroud)
这是我计算在main中调用的分数的函数.它应该是一个无效函数吗?
float calculateScore(float scores[], const int judges, float difficulty, int maxScore, int least) {
float sum = 0;
for (int i = 0; i < judges; i++) {
sum += scores[i];
}
return sum - scores[least] - scores[maxScore] * difficulty * .6;
}
int findLeast(float scores[], const int judges) {
int least = 0;
for (int i = 1; i< judges; i++)
if (scores[i] < scores[least])
least = i;
return least;
}
int findMax(float scores[], const int judges) {
int maxScore = 0;
for (int i = 1; i< judges; i++)
if (scores[i] > scores[maxScore]) {
maxScore = i;
}
return maxScore;
}
Run Code Online (Sandbox Code Playgroud)
您calculateScore使用float * const,int,floatmain函数调用args ,而实际方法的签名是float scores[], const int judges, float difficulty, int maxScore, int least.
总之,您在调用函数时缺少参数main().该方法需要一个数组scores[],一个整数judges,一个浮点数difficulty和一个int maxScore,以及一个int least,但你只给出了a float*(与a不同float[]),a int和另一个float.
因此,您没有提供正确的类型/数量的参数,并且编译器告诉您它无法找到具有这些参数类型的方法.
与您的错误无关的问题是,您使用的方法定义(calculateScore)maxScore作为索引scores,而maxScore看起来只是最大分数的值.因此您可以scores[maxScore]简单地替换maxScore.同样的least- 它是一个值,而不是一个索引,所以你可以使用least而不是scores[least].