// 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);
~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;
};
cmt::cmt( cmt & a)
{ (*this)=a;};
ostream & operator<<( ostream & os, cmt & a)
{ cout<<"\n so chung minh:"<
cout<<"\n ho ten:"<
cout<<"\n nam sinh:"<
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);
friend istream & operator>>( istream & is, sv & a);
sv( sv &);
sv & operator=( sv & a);
};
sv::sv()
{ tenlop= new char[15];
dtb=0;
};
sv::sv(
char*tenlop1,
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;
};
float
dtb1,char*scm1,char*hoten1,
int
sv::sv( sv & a)
{ (*this)= a;};
ostream & operator<<( ostream & os, sv & a)
{ cout<<"\n ten lop:"<
cmt *dta;
dta=a.laydc();
cout<<*dta;
cout<<"\n diem trung binh:"<
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
cin>>a[i];
};
sv maxtuoi( sv * a, int k)
{ sv t= a[0];
for( int i=0; i
if( t.laynam()>a[i].laynam())
t=a[i];
return t;
};
sv maxdiem( sv *a, int k)
{ sv t= a[0];
for( int i=0; i
if( t.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:"<
cout<<"\n sinh vien co diem cao nhat:"<
delete a;
getch();
};