#include <conio.h>
#include <ctype.h>
#include <iostream.h>
#include <stdio.h>
class PUBLICATION //declare abstract class
{
char Title[30];
protected:
float Price;
int Qty;
public:
PUBLICATION()
{
cout <<"Ten an pham: "; fflush
(stdin
); gets
(Title
); }
void Put()
{
cout <<"\nAn pham " <<Title
; cout <<"\nCo don gia: " <<Price
<<endl
; cout <<"\nSo luong: " <<Qty
; }
virtual void PutData()=0; // pure virtual function
virtual float IsOver() = 0;
virtual float Get_TG() = 0;
virtual ~PUBLICATION(){;};
};
class BOOK: public PUBLICATION
{
int Page;
static float TTG_SACH;
public:
BOOK()
{
TTG_SACH += (Qty * Price);
}
void PutData()
{
Put();
cout <<"\nSo trang: " <<Page
<<endl
; }
//thêm hàm này vào là ok
float Get_TG()
{
return 0.0;
}
float IsOver() // khai bao kieu float ma tra ve kieu int
{
return TTG_SACH;
}
virtual ~BOOK(){;};
};
float BOOK:: TTG_SACH = 0;
class TAPE: public PUBLICATION
{
int PlayTime;
static float TTG_BANG;
public:
TAPE()
{
cout <<"\nThoi gian chay: "; cin >>PlayTime
; TTG_BANG += Qty * Price;
}
void PutData()
{
Put();
cout <<"\nThoi gian chay: " <<PlayTime
<<endl
; }
float IsOver()
{
return PlayTime > 90 ? 1.0 : 0.0;
}
float Get_TG()
{
return TTG_BANG;
}
};
float TAPE:: TTG_BANG = 0;
void main()
{
int n1, n2;
// clrscr();
cout <<"\nSo dau sach cua hang: "; cin >>n1
; cout <<"\nSo dau bang trong cua hang: "; cin >>n2
;
BOOK* SACH;
TAPE* BANG;
PUBLICATION *DS[100];
//nhap du lieu
for(int i=0; i<n1; i++)
{
SACH = new BOOK; //Lo^~i
DS[i] = SACH;
}
for(i=0; i<n2; i++)
{
BANG = new TAPE; //Lo^~i(?) (?) [size="4"][font="Arial"][color="Black"][fixed][fixed][/fixed][/fixed][/color][/font][/size]
DS[i+n1] = BANG;
}
//xuat du lieu
for(i=0; i,n1; i++)
{
DS[i]->PutData();
cout <<(DS
[i
]->IsOver
() == 1 ? " Sach hon 900 trang" : "") <<endl
; }
cout <<endl
<<"Tong tri gia sach= " <<SACH
->Get_TG
() <<endl
; for(i=0; i<n2; i++)
{
DS[i+n1]->PutData();
cout <<(DS
[i
+n1
]->IsOver
() == 1 ? " Bang > 90" : "") <<endl
; }
cout <<endl
<<"Tong tri gia bang= " <<BANG
->Get_TG
() <<endl
; getch();
}