#include<conio.h>
#include<stdio.h>
//#include<string.h>
class cmt
{
char *so,*ten;
int nam;
public:
cmt();
cmt(char*so1,char*ten1,int nam1);
~cmt();
cmt operator = (cmt &);
cmt(const cmt &);
void nhap();
void xuat();
int lnam();
cmt *dc();
};
cmt::cmt()
{
so=new char[10];
ten=new char[25];
nam=0;
};
cmt::cmt(char* so1,char* ten1,int nam1) {
Trang 2ten=new char[25]; strcpy(so,so1); strcpy(ten,ten1); nam=nam1;
};
cmt::~cmt()
{
delete so;
delete ten;
nam=0;
};
cmt::cmt(const cmt &t) {
so=new char[25]; ten=new char[10]; strcpy(so,t.so); strcpy(ten,t.ten); nam=t.nam;
};
cmt cmt::operator=(cmt &t) {
strcpy(so,t.so); strcpy(ten,t.ten); nam=t.nam;
return t;
};
void cmt::nhap()
{
Trang 3cout<<"\n nhap so cmt ";cin>>so;
cout<<"\n nhap ten ";cin>>ten;
cout<<"\n nhap nam ";cin>>nam;
};
void cmt::xuat()
{
cout<<"\n so cmt la "<<so;
cout<<"\n ten la "<<ten;
cout<<"\n nam sinh la "<<nam;
};
int cmt::lnam()
{
return nam;
};
cmt *cmt::dc()
{
return this;
};
class sv:public cmt
{
float dtb; char *lop;
public:
sv();
sv(char *so1,char *ten1,int nam1,float dtb1, char *lop1); sv&operator = (sv &);
~sv();
void nhap();
Trang 4sv(sv &);
float dtb1();
};
sv::sv():cmt()
{
dtb=0;
lop=new char[25];
};
sv::sv(char *so1,char *ten1,int nam1,float dtb1,char *lop1):cmt(so1,ten1,nam1) {
dtb=dtb1;
lop=new char[25];
strcpy(lop,lop1);
};
sv&sv::operator=(sv &t)
{
cmt *dta1,*dta2;
dta1=(*this).dc();
dta2=t.dc();
(*dta1)=(*dta2);
dtb=t.dtb;
lop=new char[25];
strcpy(lop,t.lop);
return t;
};
sv::~sv()
{
Trang 5delete lop;
dtb=0;
};
sv::sv(sv &t)
{
*this=t;
};
void sv::nhap()
{
cmt::nhap();
cout<<"\n nhap diem trung binh ";cin>>dtb; cout<<"\n nhap lop ";cin>>lop;
};
void nhap1(sv a[],int k)
{
for(int i=0;i<k;i++)
{
cout<<"\n nhap thong tin sv thu "<<i+1; a[i].nhap();
};
};
void sv::xuat()
{
cmt::xuat();
cout<<"\n diem trung binh la "<<dtb;
cout<<"\n lop la "<<lop;
};
Trang 6return dtb;
};
sv maxdtb(sv a[],int k)
{
sv temp=a[0];
int i=0;
for(i=1;i<k;i++)
if(temp.dtb1()<a[i].dtb1())temp=a[i]; return temp;
};
sv maxtuoi(sv a[],int k)
{
sv temp;
temp=a[0];
int i=0;
for(i=1;i<k;i++)
if(temp.lnam()>a[i].lnam())temp=a[i]; return temp;
};
int main()
{
sv *a;
int n;
cout<<"\n nhap so sinh vien ";
cin>>n;
a=new sv[n];
cout<<"\n nhap thong tin tung sinh vien";
Trang 7cout<<"\n nguoi co diem trung binh cao nhat la "; maxdtb(a,n).xuat();
cout<<"\n nguoi co tuoi lon nhat la ";//a[0].xuat(); maxtuoi(a,n).xuat();
getch();
};