Help with error when running program

Says cannot convert double to double
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <iomanip>
#include <fstream>

#define MAXTEAMS 48

using namespace std;

struct teamInfo
{
char schoolName[20];
char teamName[20];
int game1Score;
int game2Score;
int game3Score;
};

void calcStats(teamInfo[], int, double, double, double, int, int);
void printArray(teamInfo[], int);
int buildArray(teamInfo[]);

int main()
{
teamInfo teamAr[MAXTEAMS];
int teamcount, game1, game2, game3, totscore, loclow, lochigh;
double avgGame1, avgGame2, avgGame3;

teamcount = buildArray(teamAr);

printArray( teamAr, teamcount);

calcStats( teamAr, teamcount, &avgGame1, &avgGame2, &avgGame3, &lochigh, &loclow);

cout << "Tiddly-Winks Tournament Statistics\n";
cout << "----------------------------------";
cout << "Average Game 1 Score\t" << avgGame1 << endl;
cout << "Average Game 2 Score\t" << avgGame2 << endl;
cout << "Average Game 3 Score\t\n" << avgGame3 << endl;
cout << "Highest Scoring Team\t" << teamAr[lochigh].teamName << endl;
cout << "Lowest Scoring Team\t" << teamAr[loclow].teamName << endl;

}

/********************************************************************
This function is used to calculate various stats from the tournament. It
the array, the count of teams, the averages of the games, and the location
of the highest and lowest scores as its arguments
*********************************************************************/

void calcStats (teamInfo teamAr[], int teamcount, double &avgGame1, double &avgGame2,
double &avgGame3, int &lochigh, int &loclow)
{
int i;
double sum1 = 0.00, sum2 = 0.00, sum3 = 0.00;

int temphigh,templow, total;

for (i == 0; i < teamcount; i++)
{
sum1 = sum1 + teamAr[i].game1Score;
sum2 = sum2 + teamAr[i].game2Score;
sum3 = sum3 + teamAr[i].game3Score;

total = teamAr[i].game1Score + teamAr[i].game2Score + teamAr[i].game3Score;

if ( total > temphigh)
{
temphigh = total;
lochigh = i;
}

if ( total < templow)
{
templow = total;
loclow = i;
}

}

avgGame1 = sum1 / teamcount;
avgGame2 = sum2 / teamcount;
avgGame3 = sum3 / teamcount;

}

/********************************************************************
This function totals up the score of all three games, and also displays all
of the information gathered in the tournament by printing the array. It has
the teaminfo array and number of teams as its arguments.
********************************************************************/

void printArray (teamInfo teamAr[], int teamcount)
{
int i, total, sub = 0;
cout << "\t\tBig 9 Conference Tiddly-Winks Tournament\n\n";
cout << "School Name\t" << "Team Name\t" << "Game 1 " << "Game 2 ";
cout << "Game 3 " << "Total Score\n";
cout << "--------------------------------------------------------\n\n";
for (i == 0; i < teamcount; i++)
{
total = teamAr[i].game1Score + teamAr[i].game2Score + teamAr[i].game3Score;

cout << teamAr[i].schoolName << setw(9) << teamAr[i].teamName << setw( 7);
cout << teamAr[i].game1Score << setw(4) << teamAr[i].game2Score <<setw(4);
cout << teamAr[i].game3Score << setw(4) << total << endl;
sub ++;
if (sub%4 == 0)
cout << endl;
}
}

/*********************************************************************
This function builds the array. It gets the information from the other
program and makes an array with structures as the types. It has the teaminfo
team array as its argument, and returns the number of valid teams.
**********************************************************************/

int buildArray(teamInfo teamAr[])
{
ifstream inFile;
int i;
teamInfo aTeam;

inFile.open ( "binary_teams" );

if ( inFile.fail() )
{
cout << "input file did not open";
exit(0);
}

i = 0;

inFile.read( (char *) &aTeam, sizeof(aTeam) );

while (inFile)
{
teamAr[i] = aTeam;

i++;

inFile.read( (char *) &aTeam, sizeof(aTeam) );
}

return i;
}
Last edited on
Says cannot convert double to double

That would be sad. Actually, it's saying cannot convert from double* to double.

This is happening because, here:

calcStats( teamAr, teamcount, &avgGame1, &avgGame2, &avgGame3, &lochigh, &loclow);

You're passing pointers to double to the parameters double &avgGame1, double &avgGame2 and double &avgGame1 which are in fact references to doubles (and similarly for the last two parameters but with ints instead).

When you use References, there is no extra syntax required when you pass the parameters in the function call, you can simply pass the variables in as usual.
Edit your post to use code tags instead of output or quote tags. The code tags will assign a number to each line. Finally, point out the exact line number where you get the error, and ideally include the verbatim of the error message.

That way you should get the speediest help.
once i change the syntax i get another error on the same line saying

undefined reference to 'calcStats(teamInfo*,int,double,double,double,int,int)'
Last edited on
Check the spelling and capitalization of the function call to make sure it matches the declaration and definition. If they match and the issue is still not solved, then post the new code and we'll have a look.
Topic archived. No new replies allowed.