vasilopita
یک شنبه 28 آذر 1389, 16:56 عصر
نمی دونم چرا وقتی name و family داخل کلاس رو از آرایه به اشاره گر تبدیل می کنم موقع اجرا با مشکل مواجه می شه؟ (ارور نمی ده ولی توی اجرا شدن اونجا که مقدار name رو می گیره یهو هنگ می کنه)
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class student_info
{
public:
char* name;
char* family;
long int id;
float avg;
void get_info(int i)
{
cout<<"\n"<<i+1<<"::\n";
cout<<"Name >>> ";
cin>>name;
cout<<"Family >>> ";
cin>>family;
cout<<"ID >>> ";
cin>>id;
cout<<"Averege >>> ";
cin>>avg;
cout<<".................................................. ........";
}
};
void find_max(student_info *,int );
void search(student_info *,int);
void print_all(student_info *,int);
void delete_student(student_info*,int);
void main()
{
cout<<"Please Enter number of student ... \n";
int number =0;
cin>>number;
student_info *stu;
stu=new student_info[number];
for(int i=0;i<number;i++)
{
//cout<<"\a";
stu[i].get_info(i);
}
//find maximum averege
find_max(stu,number);
//serch a student
search(stu,number);
//delete a student
delete_student(stu,number);
//print all student
print_all(stu,number);
}
void find_max(student_info *stu,int number)
{
float max=0;
int j;
for(int i=0;i<number;i++)
{
if(stu[i].avg > max)
{
max=stu[i].avg;
j=i;
}
}
cout<<"\a\a\n\t\t The best Student is: \n";
cout<<stu[j].name;
cout<<" "<<stu[j].family<<"\n";
cout<<"ID :"<<stu[j].id<<"\n";
cout<<"Averege :"<<stu[j].avg<<"\n\n";
}
void search(student_info *stu,int number)
{
int flag=0;
int i;
long int ID;
cout<<"\n\aPlease Enter The student ID To Search...\n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<" The Studen Has found... \n";
cout<<stu[i].name<<" "<<stu[i].family<<endl;
cout<<"averege: "<<stu[i].avg<<endl;
cout<<"ID :"<<stu[i].id<<"\n";
}
else
{
cout<<"THE STUDENT HAS NOT FOUND...\n";
}
}
void print_all(student_info *stu,int number)
{
cout<<" ++++++++++++++++++++++STUDENT LIST++++++++++++++++++++++++++++++++ \n";
for(int i=0;i<number;i++)
{
cout<<"************************************************** ***********************\n";
cout<<stu[i].name<<" "<<stu[i].family<<" "<<"Averege: "<<stu[i].avg<<" "<<"ID: "<<stu[i].id<<"\n";
}
}
void delete_student(student_info *stu,int number)
{
int ID;
int i;
bool flag=0;
cout<<"Please Enter The Student ID To Delete... \n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{
flag=1;
ID=i;
break;
}
}
if(flag==0)
{
cout<<"\nThis Id is not valid ....";
}
else
{
stu[ID].name[10]=NULL;
stu[ID].family[20]=NULL;
stu[ID].avg='\0';
stu[ID].id='\0';
}
}
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
class student_info
{
public:
char* name;
char* family;
long int id;
float avg;
void get_info(int i)
{
cout<<"\n"<<i+1<<"::\n";
cout<<"Name >>> ";
cin>>name;
cout<<"Family >>> ";
cin>>family;
cout<<"ID >>> ";
cin>>id;
cout<<"Averege >>> ";
cin>>avg;
cout<<".................................................. ........";
}
};
void find_max(student_info *,int );
void search(student_info *,int);
void print_all(student_info *,int);
void delete_student(student_info*,int);
void main()
{
cout<<"Please Enter number of student ... \n";
int number =0;
cin>>number;
student_info *stu;
stu=new student_info[number];
for(int i=0;i<number;i++)
{
//cout<<"\a";
stu[i].get_info(i);
}
//find maximum averege
find_max(stu,number);
//serch a student
search(stu,number);
//delete a student
delete_student(stu,number);
//print all student
print_all(stu,number);
}
void find_max(student_info *stu,int number)
{
float max=0;
int j;
for(int i=0;i<number;i++)
{
if(stu[i].avg > max)
{
max=stu[i].avg;
j=i;
}
}
cout<<"\a\a\n\t\t The best Student is: \n";
cout<<stu[j].name;
cout<<" "<<stu[j].family<<"\n";
cout<<"ID :"<<stu[j].id<<"\n";
cout<<"Averege :"<<stu[j].avg<<"\n\n";
}
void search(student_info *stu,int number)
{
int flag=0;
int i;
long int ID;
cout<<"\n\aPlease Enter The student ID To Search...\n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<" The Studen Has found... \n";
cout<<stu[i].name<<" "<<stu[i].family<<endl;
cout<<"averege: "<<stu[i].avg<<endl;
cout<<"ID :"<<stu[i].id<<"\n";
}
else
{
cout<<"THE STUDENT HAS NOT FOUND...\n";
}
}
void print_all(student_info *stu,int number)
{
cout<<" ++++++++++++++++++++++STUDENT LIST++++++++++++++++++++++++++++++++ \n";
for(int i=0;i<number;i++)
{
cout<<"************************************************** ***********************\n";
cout<<stu[i].name<<" "<<stu[i].family<<" "<<"Averege: "<<stu[i].avg<<" "<<"ID: "<<stu[i].id<<"\n";
}
}
void delete_student(student_info *stu,int number)
{
int ID;
int i;
bool flag=0;
cout<<"Please Enter The Student ID To Delete... \n";
cin>>ID;
for(i=0;i<number;i++)
{
if(ID==stu[i].id)
{
flag=1;
ID=i;
break;
}
}
if(flag==0)
{
cout<<"\nThis Id is not valid ....";
}
else
{
stu[ID].name[10]=NULL;
stu[ID].family[20]=NULL;
stu[ID].avg='\0';
stu[ID].id='\0';
}
}