I'm creating an ice skating program for my class and I'm running into an error messages during run-time. It occurs when the compiler tries to add the performance and technical scores in the Judge function. Any help would be appreciated and if any clarification is needed, please let me know!
Edit: The error messages are "First-chance exception at 0x00FE4686 in IceSkating1.exe: 0xC0000005: Access violation reading location 0xCDCDCDD5." and "Unhandled exception at 0x00FE4686 in IceSkating1.exe: 0xC0000005: Access violation reading location 0xCDCDCDD5."
#include <iostream>
#include <iomanip>
using namespace std;
typedef int *intptr;
class Judge
{
private:
int performance, technical, total = 0;
public:
void SetPerformance(int a) { performance = a; }
void SetTechnical(int a) { technical = a; }
void SetTotal() { total = performance + technical;} //EXCEPTION OCCURS HERE
int GetTotal() { return total; }
};
class Skater
{
private:
int ID;
Judge* judges;
int *ranks;
public:
void SetID()
{
int t;
cout << "Please enter skater ID: ";
cin >> t;
ID = t;
}
int GetID()
{
return ID;
}
void Judges(int qnty)
{
int p, t;
judges = new Judge[qnty];
for (int count = 0; count < qnty; count++)
{
cout << "Please enter the peformance score from judge " << count + 1 << ":";
cin >> p;
while ((p > 6) || (p < 0))
{
cout << "Invalid score. Please enter a value between 0 - 6. \n";
cin >> p;
}
judges[qnty].SetPerformance(p);
cout << "Please enter the technical score from judge " << count + 1 << ":";
cin >> t;
while ((t > 6) || (t < 0))
{
cout << "Invalid score. Please enter a value between 0 - 6. \n";
cin >> t;
}
judges[qnty].SetTechnical(t);
}
}
int GetJudgeTotal(int judgeqnty)
{
return judges[judgeqnty].GetTotal();
}
void SetRank(int judgeqnty, int rank)
{
ranks = new int[judgeqnty];
rank = ranks[judgeqnty];
}
int GetRank(int judgeqnty)
{
return ranks[judgeqnty];
}
};
int main()
{
Skater* s;
int skaterqnty, judgeqnty;
cout << "Please enter number of contestants: ";
cin >> skaterqnty;
while ((skaterqnty > 24) || (skaterqnty < 0))
{
cout << "Please enter a valid amount. \n";
cin >> skaterqnty;
}
s = new Skater[skaterqnty];
for (int count = 0; count < skaterqnty; count++) {
s[count].SetID();
}
cout << "Please enter odd number of judges: ";
cin >> judgeqnty;
if ((judgeqnty % 2) == 0 || (judgeqnty > 11))
{
cout << "Please enter valid number of judges. \n";
cin >> judgeqnty;
}
for (int count = 0; count < skaterqnty; count++)
{
cout << "Please enter scores for skater " << s[count].GetID() << ": \n";
s[skaterqnty].Judges(judgeqnty);
}
cout << s[0].GetJudgeTotal(0);
/*int jTotals[judgeqnty][skaterqnty];
for (int column = 0; column < skaterqnty; column++){
for (int row = 0; row < judgeqnty; row++){
jTotals[row][column] = s[column].JudgeTotal(judgeqnty);
}
}*/
cout << "---Beginning rank sort---\n";
for (int m = 0; m < judgeqnty; m++) {
int _rank = 1; cout << "---First level of loop\n";
for (int n = 0; n < skaterqnty; n++) { cout << "---Second level \n";
for (int p = 0; p < skaterqnty; p++) { cout << "---Third level \n";
if (s[n].GetJudgeTotal(m) < s[p].GetJudgeTotal(m))
{
_rank++;
cout << "Control statement completed\n";
}
} cout << "End third level\n";
s[n].SetRank(m, _rank); cout << "End second level\n";
} cout << "First level completed. \n";
}
for (int a = 0; a < skaterqnty; a++){
for (int b = 0; b < judgeqnty; b++)
{
cout << "Current Ranking:\nSkater " << s[a].GetID() << ":\t" << s[a].GetRank(b) << "\t";
}
}
cout << "\nDONE.";
}