// de bai: cho lop chung minh thu: dua tren lop chung minh thu xay dung // lop dan xuat sinh vien:
// bao gom ham va phuong thuc sau:
// lop cmt(so chung minh, ten trong chung minh, nam sinh
// lop sinh vien ( ten lop, diem trung binh);
// cac ham + phuong thuc:
// ham tao khong doi, ham tao co doi;
// ham huy, ham tao sao chep, phuong thuc toan tu gan;
// phuong thuc toan tu xuat, nhap
// phuong thuc lay dia chi cua lop chug minh thu
// phuong thuc lay nam sinh
// phuong thuc lay diem trung binh
//ung dung:
// cho lop k sinh vien viet chuong trinh in ra sinh vien co diem cao nhat va // in ra sinh vien co tuoi lon nhat:
// bai lam:
#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
class cmt
{ char *scm, *hoten;
int nam;
public:
cmt();
cmt( char*scm1,char*hoten1,int nam1);
Trang 2~cmt();
cmt & operator=( cmt &);
cmt(cmt &);
cmt*laydc();
int laynam();
friend ostream & operator<<( ostream & os, cmt & a); friend istream & operator>>( istream & is, cmt & a); };
cmt::cmt()
{ scm= new char[9];
hoten= new char[25];
nam=0;
};
cmt::cmt( char*scm1, char*hoten1, int nam1)
{ strcpy(scm,scm1);
strcpy(hoten,hoten1);
nam=nam1;};
cmt::~cmt()
{ delete scm;
delete hoten;
nam=0;};
cmt & cmt::operator=( cmt &a)
{ scm= new char[9];
hoten= new char[25];
strcpy(scm,a.scm);
strcpy(hoten,a.hoten);
nam=a.nam;
return a;
Trang 3};
cmt::cmt( cmt & a)
{ (*this)=a;};
ostream & operator<<( ostream & os, cmt & a)
{ cout<<"\n so chung minh:"<<a.scm;
cout<<"\n ho ten:"<<a.hoten;
cout<<"\n nam sinh:"<<a.nam;
return os;
};
istream & operator>>( istream & is, cmt & a)
{ cout<<"\n nhap so chung minh thu:"; gets(a.scm);
cout<<" nhap ho ten:"; gets(a.hoten);
cout<<" nhap nam sinh:"; cin>>a.nam;
return is;
};
int cmt::laynam()
{ return nam;};
cmt*cmt::laydc()
{ return this;};
class sv:public cmt
{ char *tenlop;
float dtb;
public:
sv();
sv( char*tenlop1, float dtb1,char*scm1,char*hoten1, int nam1);
~sv();
float laydiem();
friend ostream & operator<<(ostream & os, sv & a);
Trang 4friend istream & operator>>( istream & is, sv & a);
sv( sv &);
sv & operator=( sv & a);
};
sv::sv()
{ tenlop= new char[15];
dtb=0;
};
sv::sv( char*tenlop1, float dtb1,char*scm1,char*hoten1, int nam1):cmt(scm1,hoten1,nam1)
{ strcpy(tenlop, tenlop1);
dtb=dtb1;
};
sv::~sv()
{ delete tenlop;
dtb=0;
};
float sv::laydiem()
{ return dtb;};
sv & sv::operator=( sv & a)
{ cmt * dta1, *dta2;
dta1=(*this).laydc();
dta2=a.laydc();
*dta1=*dta2;
tenlop= new char[15];
strcpy(tenlop,a.tenlop);
dtb= a.dtb;
return a;
};
Trang 5sv::sv( sv & a)
{ (*this)= a;};
ostream & operator<<( ostream & os, sv & a)
{ cout<<"\n ten lop:"<<a.tenlop; cmt *dta;
dta=a.laydc();
cout<<*dta;
cout<<"\n diem trung binh:"<<a.dtb; return os;
};
istream & operator>>( istream & is, sv & a)
{ cout<<"\n ten lop:"; gets(a.tenlop); cmt *dta;
dta= a.laydc();
cin>>*dta;
cout<<"diem trung binh:"; cin>>a.dtb; return is;
};
void nhap( sv *a, int k)
{ for( int i=0; i<k; i++)
cin>>a[i];
};
sv maxtuoi( sv * a, int k)
{ sv t= a[0];
for( int i=0; i<k; i++)
if( t.laynam()>a[i].laynam())
t=a[i];
return t;
Trang 6};
sv maxdiem( sv *a, int k)
{ sv t= a[0];
for( int i=0; i<k; i++)
if( t.laydiem()<a[i].laydiem())
t=a[i];
return t;
};
void main()
{ clrscr();
sv * a; int n;
cout<<"\n nhap so sinh vien cua lop:"; cin>>n;
a= new sv[n];
cout<<"\n nhap sinh vien:";
nhap(a,n);
cout<<"\n sinh vien co tuoi cao nhat:"<<maxtuoi(a,n); cout<<"\n sinh vien co diem cao nhat:"<<maxtuoi(a,n); delete a;
getch();
};