Exception thrown: read access violation. in C++

  • Thread starter Thread starter Arash_89
  • Start date Start date
A

Arash_89

Guest
Hello,

I have an Exception thrown: read access violation. in C++.

Could you help me please?

Thanks


1525295.jpg1525296.jpg


#include<iostream>
#include<string>
using namespace std;
struct Courses
{
string name;
int numberOfUnit;
float Grade;
};

struct Student
{
int number;
string name;
string family;
int term;
int numberOfCourse;
float totalGrade;
string birthday;
float *listOfGrade ;
string* listOfCourses;
Courses *SplitCourse;
};

int main()
{
int n; cin >> n;
Student* myStudent = new Student[n];
Courses* myCourses = new Courses[n];
for (int i = 0; i < n; i++)
{
cin >> myStudent.number;
cin >> myStudent.name;
cin >> myStudent.family;
cin >> myStudent.term;
cin >> myStudent.numberOfCourse;
cin >> myStudent.totalGrade;
myStudent.listOfGrade = new float[myStudent.term];
for (int j = 0; j < myStudent.term - 1; j++)
{
cin >> myStudent.listOfGrade[j];
}
cin >> myStudent.birthday;
myStudent.listOfCourses = new string[myStudent.numberOfCourse];
for (int j = 0; j < myStudent.numberOfCourse; j++)
{
cin >> myStudent.listOfCourses[j];
}

}

string delimiter = "/"; string s[3]; int K = 0;
string str;
for (int i = 0; i < n; i++)
{
myStudent.SplitCourse = new Courses[myStudent.numberOfCourse];
for (int j = 0; j < myStudent.numberOfCourse; j++)
{
str = myStudent.listOfCourses[j];
size_t pos = 0;
std::string token;
while ((pos = str.find(delimiter)) != std::string::npos) {
token = str.substr(0, pos);
s[i++] = token;
str.erase(0, pos + delimiter.length());
}
s[2] = str;

myStudent.SplitCourse[j].name = s[0];
myStudent.SplitCourse[j].numberOfUnit = stoi(s[1]);
myStudent.SplitCourse[j].Grade = stof(s[2]);
}
}
float sum = 0;
int numbers = 0;
for (int i = 0; i < n; i++)
{
numbers = 0; sum = 0;
for (int j = 0; j < myStudent.numberOfCourse; j++)
{
numbers += myStudent.SplitCourse[j].numberOfUnit;
sum += myStudent.SplitCourse[j].numberOfUnit * myStudent.SplitCourse[j].Grade;

}
sum /= numbers;
myStudent.totalGrade = (myStudent.totalGrade + sum)/2;
}
return 0;
}

Continue reading...
 
Back
Top