Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Access Violation

mindthegapmindthegap Member Posts: 4
I wrote this code where there is no error on compiling.Though when I'm about to run it I get an access violation error and I have no idea why.

There is something wrong with the pointer s1 but can't figure out what.


#include
#include
#include

using namespace std;

class student{
private:
int am;
char* oe;
int les;
float *lesg;
float mo;
int ples;
int nples;
float mingr;
float maxgr;
public:
student(int num2,float *grad,int id,char* onoma){ //constructor of student
if(num2>0 && num2<9) les=num2;
else les=0;
lesg=new float[les];//desmeusi mnhmhs
if (lesg!=0){
for (int i=0; i<les; i++)
if (grad[i]>0.0 && grad[i]<10.1)lesg[i] = grad[i];
else lesg[i]=0;
};
setid(id);
setoe(onoma);
mo=0;
ples=0;
nples=0;
mingr=0;
maxgr=0;
};
~student(){ //destructor of student
delete [] lesg;
};
void setid(int id){ //setting id
if (id>0 && id<10000) am=id;
else am=0;};
void setoe(char* onoma){ //setting student's name
if (onoma!=0 && strlen(onoma)>0 && strlen(onoma)<41) oe=onoma; //elegxos gia xaraktires
else oe="NO_NAME";};
float setmo();
int setples();
int setnples();
float setmax();
float setmin();
void printdata();
student(const student &s1); //copy constructor
};

float student::setmo()//calculating average
{
float sum=0;
int i;
for(i=0;i<les;i++){
sum+=lesg[i];
}
return sum/les;
}

int student::setples() // calculating passed lessons
{
int sum=0;
int i;
for(i=0;i<les;i++){
if(lesg[i] > 5.0) sum+=1;
}
return sum;
}

int student::setnples()// calculating not passed lessons
{
int sum=0;
int i;
for(i=0;i max) max=lesg[i];
}
return max;
}

float student::setmin()// calculating minimum grade
{
float min=lesg[1];
int i;
for (i=1;i=0 && strlen(title)<81) dtitle=title;
if(v_diplom>=0.0 && v_diplom<=10.0) dipgr=v_diplom;
if(w_factor>=0 && w_factor<=1) f=w_factor;
};
void get_fingrad();
void printdata();
};

void grad_student::get_fingrad(){
fingrad=student::setmo()*(1-f)+dipgr*f;
}

void grad_student::printdata(){
student::printdata();
cout<<"
Diplomatic Project Title:"<<dtitle<<endl;
cout<<"
Diplomatic Project Grade:"<<dipgr<<endl;
cout<<"
Diplomatic Project Grade Factor:"<<f<<endl;
cout<<"
Final Grade:"<<fingrad<<endl;
}

int main(){

float gr[]={7.0, 3.0, 6.0, 10.0, 4.0}; //grade array
student s1(sizeof(gr)/sizeof(int),gr,1510,"James Stathatos");//initialization of s1

grad_student gs1(s1,"Telecommunications",7.3,0.4);//initiallization of gs1

gs1.get_fingrad();
gs1.printdata();

s1.~student();

system("pause");
}


Thank you in advance and have a Happy New Year!:)
Sign In or Register to comment.