我一直在"未定义引用' x'"其中x是函数原型。我已经绘制了功能,但主要仍然需要工作只是fyi。我只想在按下之前修复ld返回错误1,但我似乎无法确定问题。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
//Symbolic Constants
const int MAX=11;
//Function Prototypes
int buildQuizArray(int);
void printArray(string,int,int);
double calcQuizAverage(int,int);
void sortArray(int,int);
int main ()
{
int quizScores[MAX];
int compQuiz;
int tempArray[MAX];
int average;
compQuiz = buildQuizArray(quizScores[MAX]);
quizScores[MAX]=tempArray[MAX];
average = calcQuizAverage(quizScores[MAX], compQuiz);
cout<<endl<<"Your quiz average is "<<average<<endl;
printArray ("Quiz Scores", tempArray[MAX], compQuiz);
sortArray(tempArray[MAX], compQuiz);
}
int buildQuizArray(int quizArray[])
{
int numQuiz, input, a;
a=0;
numQuiz=1;
cout << "Enter your score for quiz "<<numQuiz<<" (-1 to quit): ";
cin >> input;
while (input != -1)
{
quizArray[a] = input;
a++;
numQuiz++;
cout<< "Enter your score for quiz "<<numQuiz<<" (-1 to quit): ";
cin >> input;
}
return a+1;
}
void printArray(string reportTitle, int quizArray[], int numberOfQuizzes)
{
int a;
cout<< reportTitle <<endl<<"-----------"<<endl;
for (a=0; a<numberOfQuizzes; a++)
{
cout<< "Quiz " << a <<": " << setw(2) <<quizArray[a] <<"/10"<<endl;
}
}
double calcQuizAverage(int quizArray[], int numberOfQuizzes)
{
int sum, lowSum, avg, a;
a = 0;
sum = 0;
lowSum = quizArray[0] + quizArray[1];
for (a=0; a< numberOfQuizzes; a++)
{
sum += quizArray[a];
}
if (numberOfQuizzes <= 2)
{
avg = sum / (10 * numberOfQuizzes) * 100;
}
else
{
(sum - lowSum) / (10 * (numberOfQuizzes - 2)) * 100;
}
return avg;
}
void sortArray(int quizArray[], int numberOfQuizzes)
{
int min, a, b, temp;
for (a=0; a<numberOfQuizzes; a++)
{
min = a;
}
for(b=a+1; b<numberOfQuizzes; a++)
{
if (quizArray[a] < quizArray[min])
{
min = b;
}
}
temp = quizArray[a];
quizArray[a]=quizArray[min];
quizArray[min]=temp;
}
答案 0 :(得分:1)
你声明:
int buildQuizArray(int);
但你定义:
int buildQuizArray(int quizArray[]) ...
int[]
与int
不同。
另外:当你打电话给他们时,你正在传递一个int
;请注意,例如quizScores[MAX]
是quizScores
的MAXth元素,是int
,实际上超出了该数组的末尾,实际上并不是您想要做的事情。
如果我不得不猜测你是如何到达这里的,我猜你几乎所有事情都正确,但是你不知不觉地宣布你的原型不正确(int
而不是int[]
),所以你那么将[MAX]
添加到您传递给函数的数组只是为了让它进行编译,然后遇到导致你在这里的不可避免的链接器问题。如果这就是你所做的,那就不是正确的做法。
你真正想做的是:
对于采用数组的函数,请正确声明它们:
int buildQuizArray (int[]);
调用时将数组指针本身传递给函数:
buildQuizArray(quizScores);
按原样保留声明,它们看起来很好(语法方面)。