#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class CMT
{ char* cmt,*ten;
int nam;
public:
CMT();
CMT( char*cmt1, char* ten1, int nam1); CMT& operator=( CMT &);
~ CMT();
CMT( CMT & );
void nhap();
void xuat();
int lnam();
CMT* dc();
};
CMT::CMT()
{ cmt=NULL;
ten=NULL;
nam=0;
};
CMT::CMT( char* cmt1, char* ten1, int nam1) { cmt= new char[11];
strcpy( cmt,cmt1);
ten= new char[25];
Trang 2strcpy( ten, ten1);
nam=nam1;
};
CMT&CMT::operator=( CMT & a)
{ cmt = new char[9];
cmt=a.cmt;
ten = new char[25];
ten= a.ten;
nam= a.nam;
return a;
};
CMT::~CMT()
{ delete cmt, delete ten;
nam=0;
};
void CMT::nhap()
{ cout<<"\n nhap so chung minh thu:"; gets( cmt);
cout<<"\n nhap ten:";gets(ten);
cout <<"\n nhap nam sinh:"; cin>>nam; };
void CMT::xuat()
{ cout<<"\n so chung minh:"<<cmt; cout<<"\ ten sinh vien:"<<ten;
cout<<"\n nam sinh:"<<nam;
};
int CMT::lnam()
{ return nam;};
Trang 3CMT *CMT::dc()
{ return this;};
class SV:public CMT
{ float dtb; char* tenlop;
public:
SV();
SV( char* cmt1, char*ten1, int nam1, float dtb1, char* tenlop1);
SV& operator=( SV &);
~SV();
void xuat();
void nhap();
SV( SV &);
float ldtb();
};
SV::SV():CMT()
{tenlop= new char[25];
tenlop= NULL;
dtb=0;
};
SV::SV( char* cmt1, char*ten1, int nam1, float dtb1, char* tenlop1):CMT(cmt1,ten1,nam1)
{ dtb=dtb1;
tenlop= new char[25];
tenlop= tenlop1;
};
SV&SV::operator=( SV & th) { CMT *dta1,*dta2;
dta1= *this.dc(); dta2= th.dc();
*dta1=*dta2;
Trang 4dtb= th.dtb;
tenlop= new char[25];
strcpy( tenlop,th.tenlop);
return th; };
SV::~SV()
{ delete tenlop;
dtb=0;
};
SV:: SV(SV& th)
{ * this= th;};
void SV::xuat()
{cout<<"\n xuat doi tuong chung minh thu:"; CMT::xuat();
cout<<"\n ten lop:"<<tenlop;
cout<<"\n diem trung binh:"<<dtb;
};
void SV::nhap()
{ cout<<"\n nhap doi tuong chung minh thu:"; CMT::nhap();
cout<<"\n ten lop:"; gets( tenlop);
cout<<"\n diem trung binh:"; cin>>dtb; };
float SV::ldtb()
{ return dtb;
};
void nhap( SV a[], int k);
SV max( SV a[], int k);
Trang 5SV maxns( SV a[], int k);
void nhap( SV a[], int k)
{ for( int i=0; i<k; i++)
{ cout<<"\n nhap sinh vien thu "<<i+1<<"la";
a[i].nhap();
};
};
SV max( SV a[], int k)
{ SV t= a[0];
for( int i=1; i<k; i++)
if( t.ldtb()<a[i].ldtb())
t= a[i];
return t;
};
SV maxns( SV a[], int k)
{ SV t= a[0];
for( int i=1; i<k; i++)
if( t.lnam()>a[i].lnam())
t= a[i];
return t;
};
void main()
{ clrscr();
SV a[100]; int n;
cout<<"\n nhap so cac sinh vien:"; cin>>n;
cout<<"\n nhap du lieu cua cac sinh vien:";
nhap(a,n);
cout<<"\n sinh vien co diem cao nhat:"; max(a,n).xuat();
Trang 6cout<<"\n sinh vien co tuoi lon nhat:"; maxns(a,n).xuat(); getch();
}