Reputation: 17
I can't seem to get my code to compile - this is the error I'm getting:
6\problem11.cpp(21): error C2660: 'calcScore' : function does not take 0 arguments
Any help or suggestions in solving this? This is a homework problem and I can't seem to figure out how to fix the error. We're not allowed to use arrays just yet.
#include <iostream>
using namespace std;
void getJudgeData(int);
void calcScore(float, float, float, float, float);
float findHighest(float, float, float, float, float);
float findLowest(float, float, float, float, float);
int main()
{
getJudgeData(1);
getJudgeData(2);
getJudgeData(3);
getJudgeData(4);
getJudgeData(5);
calcScore();
system("pause");
return 0;
}
void getJudgeData(int jnumber)
{
float score1, score2, score3, score4, score5;
switch(jnumber)
{
case 1: cout << "\nEnter the score for judge " << jnumber << ". ";
cin >> score1;
break;
case 2: cout << "\nEnter the score for judge " << jnumber << ". ";
cin >> score2;
break;
case 3: cout << "\nEnter the score for judge " << jnumber << ". ";
cin >> score3;
break;
case 4: cout << "\nEnter the score for judge " << jnumber << ". ";
cin >> score4;
break;
case 5: cout << "\nEnter the score for judge " << jnumber << ". ";
cin >> score5;
break;
calcScore(score1, score2, score3, score4, score5);
}
}
void calcScore(float one, float two, float three, float four, float five)
{
float high, low, avg;
high = findHighest(one, two, three, four, five);
low = findLowest(one, two, three, four, five);
avg = ((one + two + three + four + five) - (high+low))/3;
cout << "Final score is: " << avg <<endl;
return;
}
float findHighest(float high1, float high2, float high3, float high4, float high5) // find highest score
{
float high = 10;
if (high1 > high)
{
high1 = high;
}
else if ( high2 > high)
{
high2 = high;
}
else if ( high3 > high)
{
high3 = high;
}
else if (high4 > high)
{
high4 = high;
}
else if ( high5 > high)
{
high5 = high;
}
return high;
}
float findLowest (float low1, float low2, float low3, float low4, float low5) // find lowest score
{
float low = 1;
if (low1 < low)
{
low1 = low;
}
else if (low2 < low)
{
low2 = low;
}
else if (low3 < low)
{
low3 = low;
}
else if (low4 < low)
{
low4 = low;
}
else if (low5 < low)
{
low5 = low;
}
return low;
}
Upvotes: 0
Views: 1482
Reputation: 31952
calcScore();
You cant do this, since the function expects 4 parameters, as the compiler says.
Let me see if i understand what you want to do. Make these changes
float getJudgeData(int jnumber) //return the score
{
float score; // only one score neeeded
...
//calcScore(score1, score2, score3, score4, score5);
}
You can remove the last calcScore
line since
a) it wont be reached anyway, it is after a break statement, within the switch.
b) You will ever have one score at this point.
int main()
{
float score1, score2, score3, score4, score5;
score1=getJudgeData(1);
score2=getJudgeData(2);
score3=getJudgeData(3);
score4=getJudgeData(4);
score5=getJudgeData(5);
calcScore(score1, score2, score3, score4, score5);
...
}
This might just do what you want - get each float, and call calcScore
on them.
Upvotes: 1
Reputation: 59997
You have the line
calcScore();
But the function requires arguments (as declared and defined in the rest of the code).
Add the arguments!
Upvotes: 2