gpt4 book ai didi

C++ 用数组简单计算分数

转载 作者:太空狗 更新时间:2023-10-29 23:52:06 24 4
gpt4 key购买 nike

这是我教科书中的练习作业,用于计算分数。它需要7个分数,并下降最高和最低。

我认为没有语法错误,但我遇到了 Unresolved external symbol 错误。我寻找了类似的问题,似乎问题可能出在使用函数而不是定义函数上。我已经定义了我所有的函数,但可能在 main 或 calculatescore 中不正确。我是 c++ 的新手,非常感谢解决这个问题的任何帮助。谢谢

这是我在 VisualStudio 上得到的错误

错误 LNK2019:未解析的外部符号“float __cdecl calculateScore(float * const,int,float)”(?calculateScore@@YAMQAMHM@Z) 在函数 _main 中引用

#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;
}

这是我在 main 中调用的计算分数的函数。它应该是一个 void 函数吗?

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;
}

最佳答案

您正在从主函数调用带有参数 float * const,int,floatcalculateScore,而实际方法的签名是 float scores[] , const int judges, float difficulty, int maxScore, int least.

总而言之,您在调用 main() 中的函数时缺少参数。该方法需要一个数组scores[],一个整数judges,一个 float difficulty,和一个int maxScore,以及一个 int least,但你只给出了一个 float*(与 float[] 不同),一个 int,和另一个 float

因此您没有提供正确的参数类型/数量,编译器告诉您它找不到具有这些参数类型的方法。

与您的错误无关的一个问题是,在您的方法定义(calculateScore)中,您使用 maxScore 作为 scores 的索引,而 maxScore 似乎只是最高分的值。因此,您可以将 scores[maxScore] 替换为简单的 maxScoreleast 也是如此 - 它是一个值,而不是索引,因此您可以使用 least 而不是 scores[least]

关于C++ 用数组简单计算分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com