E compile ko thấy lỗi gì mà chạy lỗi sợ quá e debug thì thấy đến chỗ tạo class thì nó bị lỗi ạ. ai giúp e với ạ
#include <iomanip>
#include <cstring>
#include <iostream>
using namespace std;
class Monhoc{
private:
char* tenMon;
float diemKT;
float diemQT;
public:
Monhoc();
Monhoc(const char* tenMon);
Monhoc(Monhoc& mh);
~Monhoc();
float tinhDiem();
float getDiemQT();
void setDiemQT(float diemQT);
float getDiemKT();
void setDiemKT(float diemKT);
char* getTenMon();
void setTenMon(char* tenMon);
};
Monhoc::Monhoc(){
tenMon=new char[30];
tenMon='\0';
diemKT=0;
diemQT=0;
}
Monhoc::Monhoc(const char* tenMon){
tenMon=new char[30];
strcpy(this->tenMon,tenMon);
diemKT=0;
diemQT=0;
}
Monhoc::Monhoc(Monhoc& mh){
tenMon=new char[30];
strcpy(tenMon,mh.tenMon);
diemKT=mh.diemKT;
diemQT=mh.diemQT;
}
Monhoc::~Monhoc(){
delete[] tenMon;
}
float Monhoc::tinhDiem(){
return diemQT*0.4+diemKT*0.6;
}
float Monhoc::getDiemQT(){
return diemQT;
}
void Monhoc::setDiemQT(float diemQT){
this->diemQT=diemQT;
}
float Monhoc::getDiemKT(){
return diemKT;
}
void Monhoc::setDiemKT(float diemKT){
this->diemKT=diemKT;
}
char* Monhoc::getTenMon(){
return tenMon;
}
void Monhoc::setTenMon(char* tenMon){
strcpy(this->tenMon,tenMon);
}
class SinhVien{
private:
int mssv;
char* ten;
Monhoc* dsmh;
int tongSoMH;
int soMonDaHoc;
public:
SinhVien();
SinhVien(int ms, char* t);
SinhVien(int ms, char* t, int tongMH, int soMonDaHoc);
~SinhVien();
float tinhDiemTB();
void addMonHoc(Monhoc& mh);
};
SinhVien::SinhVien(){
ten=new char[50];
mssv=0;
ten='\0';
tongSoMH=0;
int soMonDaHoc=0;
}
SinhVien::SinhVien(int ms, char* t){
ten=new char[50];
mssv=ms;
strcpy(ten,t);
tongSoMH=0;
int soMonDaHoc=0;
}
SinhVien::SinhVien(int ms, char* t, int tongMH, int soMonDaHoc=0){
ten=new char[50];
mssv=ms;
strcpy(ten,t);
tongSoMH=tongMH;
dsmh=new Monhoc[tongSoMH];
this->soMonDaHoc=soMonDaHoc;
}
SinhVien:: ~SinhVien(){
if(tongSoMH>0) delete[] dsmh;
delete[] ten;
}
float SinhVien::tinhDiemTB(){
if(soMonDaHoc>0){
float tong=0;
for(int i=0;i<soMonDaHoc;i++)
tong+=dsmh[i].tinhDiem();
return tong/soMonDaHoc;
} else return 0;
}
void SinhVien::addMonHoc(Monhoc& mh){
if(soMonDaHoc<tongSoMH){
dsmh[soMonDaHoc].setTenMon(mh.getTenMon());
dsmh[soMonDaHoc].setDiemQT(mh.getDiemQT());
dsmh[soMonDaHoc].setDiemKT(mh.getDiemKT());
soMonDaHoc++;
} else cout<<"Khong the them mon da hoc cho sinh vien nay do so mon da hoc da bang tong so mon hoc.\n";
}
int main(){
int n;
SinhVien* sv=new SinhVien[50];
cout<<"Tong so sinh vien: ";
cin>>n;
for(int i=0;i<n;i++){
char* ten;
ten=new char[50];
int tongMon=0, soMonDaHoc=0, mssv=0;
cout<<"Nhap thong cho sinh vien "<< i+1<< endl;
cout<<"\tTen: ";
fflush(stdin);
gets(ten);
cout<<"\tMSSV: ";
cin>>mssv;
cout<<"\tTong so mon hoc: ";
cin>>tongMon;
do{
cout<<"\tSo mon da hoc: ";
cin>>soMonDaHoc;
if(tongMon<soMonDaHoc) cout<<"So mon da hoc phai <= Tong so mon hoc. Hay nhap lai!\n";
} while(tongMon<soMonDaHoc);
sv[i]=SinhVien(mssv,ten,tongMon,soMonDaHoc);
delete[] ten;
cout<<"\tNhap diem cac mon:\n";
for(int j=0;j<soMonDaHoc;j++){
char* tenMH;
tenMH=new char[30];
float diemKT=0, diemQT=0;
cout<<"\t\tMon thu "<<j+1<<endl;
cout<<"\t\t\tTen: ";
fflush(stdin);
gets(tenMH);
cout<<"\t\t\tDiem QT: ";
cin>>diemQT;
cout<<"\t\t\tDiem KT: ";
cin>>diemKT;
Monhoc mon;
mon.setTenMon(tenMH);
mon.setDiemQT(diemQT);
mon.setDiemKT(diemKT);
sv[i].addMonHoc(mon);
delete[] tenMH;
}
}
cout<<"Diem trung binh cua cac sinh vien:\n";
for(int i=0;i<n;i++){
cout<<"\tSinh vien thu "<< i+1<<": "<< fixed<< left<< setw(4)<< setprecision(2)<< sv[i].tinhDiemTB()<< endl;
}
system("pause");
return 0;
}