A. MỘT SỐ BÀI CƠ BẢN

B. CODE MẪU

  • Khai báo
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
char  sdb[9];
char  *hoten;
int  khuvuc;
float  diemthi[3];
Date  ngaysinh;
Clock  thoigianxp;
  • Xây dựng mặc nhiên ko đối số
Thuebao();
Thuebao::Thuebao(){
hoten = new char[50];
diachi = new char[100];
strcpy(dienthoai, ” “);
sophut = 0;
diemthi[0]=diemthi[1]=diemthi[2]=0; 
}
  • Có đối số

Thuebao(char *, char *, char *, int);

thisinh::thisinh(char *bd, char *ht, int mn, int kv, float d1, float d2, float d3){

Thuebao::Thuebao(char *ht, char *dc, char *dt, int p){

hoten = new char[50]; strcpy(hoten, ht);

diachi = new char[100]; strcpy(diachi, dc);

strcpy(dienthoai, dt);

sophut = p;

diemthi[0]=d1;
diemthi[1]=d2;
diemthi[2]=d3;

}

Cái nào có […] rồi thì xuống dưới khỏi khai báo lại, chỉ strcpy thôi
  • Hủy
~Thuebao(){
delete  [] hoten;
delete  [] diachi; }
Chỉ xóa mấy cái có char.
  • Sao chép

Thuebao(const Thuebao &);

Thuebao::Thuebao(const Thuebao &t){

hoten = new char[50]; strcpy(hoten, t.hoten);

diachi = new char[100]; strcpy(diachi, t.diachi);

strcpy(dienthoai, t.dienthoai);

sophut = t.sophut;

diemthi[0]=t.diemthi[0];
diemthi[1]=t.diemthi[1];
diemthi[2]=t.diemthi[2];

}

  • Gán

Thuebao operator = (const Thuebao &);

Thuebao Thuebao::operator = (const Thuebao &t){

delete[] hoten;

delete[] diachi;

strcpy(dienthoai, t.dienthoai);

hoten = new char[50]; strcpy(hoten, t.hoten);

diachi = new char[100]; strcpy(diachi, t.diachi);

sophut = t.sophut;

return *this;

}

Copy lại phần sao chép

  • Cộng
_______—————————————————————————————————————–
  • So sánh (tên)

int operator > (const Thuebao &);

int Thuebao::operator > (const Thuebao &t){

return strcmp(hoten, t.hoten);

}

  • Lấy phần tử
char *layhoten() {return hoten;}
char *laysbd() {return sbd;}

Date layngaysinh() { return ngaysinh; }

float laychieucao() { return chieucao; }

  • Tái định nghĩa xuất <<

friend ostream& operator << (ostream&, Thuebao);

ostream& operator << (ostream &os, Thuebao &t) {

os << t.hoten << endl;

os << t.diachi << endl;

os << t.dienthoai << endl;

os << t.sophut << endl;

return os;

}

Có thể thêm vô Họ tên:, Địa chỉ: …; 

  • Tái định nghĩa nhập >>

friend istream& operator >> (istream&, Thuebao &);

istream& operator << (istream &is, Thuebao &t) {

is.getline(t.dienthoai, 10);

is.getline(t.hoten, 49);

is.getline(t.diachi, 99);

is >> t.sophut;

return is;

}

Nếu có […] thì trừ xuống 1 số; char thì is.getline kiểu khác thì is >>
  • Danh sách  – Tạo, nhập, in
  int n, i;
Thuebao *ds;
cout << “Danh sach co bao nhieu: “;
cin >> n;
ds = new Thuebao[n];
//Nhap danh sach
for (i=0; i<n; i++){
cout << “Nhap thong tin thue bao: ” << i+1 << endl;
ds[i].nhap();
}
//In danh sach
for (i=0; i<n; i++) {
cout << “Thue bao ” << i+1 << “:\n”;
ds[i].xuat();
}
  • Nhập – Xuất file
// Ghi vao file
ofstream f1(“DuLieu.txt”);
f1 << n <<endl;
// Ghi vao so luong doi tuong
for(int i=0; i<n; i++)
f1 << ds[i];
f1.close(); /*
// Doc du lieu tu file va luu vao danh sach ds2
int i;
ifstream f2(“DuLieu.txt”);
int n1; f2>>n1;
ThiSinh* ds2 = new ThiSinh[n1];
for(int i=0; i<n1; i++) {
f2.ignore();
f2 >> ds2[i];
}
f2.close();
cout<<“Danh sach thi sinh: “<<endl;
for(i=0; i<n1; i++) {
cout<<(i+1)<<“. Thi sinh co “;
ds2[i].In();
}
delete[] ds2;*/

C. CODE KHÁC

  • Tìm kiếm

CauthuBD cao1=ds[0];
for (i=0; i<n; i++)
if (cao1.LayCC()<ds[i].LayCCC())
cao1=i;
cao1.xuat();

  • Sau ngày

int sinhsau(Date d);

int Cauthu::sinhsau(Date d) {

return ngaysinh > d;

}

  • Đếm

int dem=0;

for (i=0; i<n; i++)

if (strcmp(ds[i].LayMau(), “Xam”) == 0 ) dem++;

cout<<“So luong loai gach mau xam la: ” << dem << endl;

  • Sắp xếp theo tên

char t1[100], t2[100];

for (i=0; i<n-1; i++) {

for (j=i+1; j<n; j++) {

strcpy(t1, ds[i].layhoten());

strcpy(t2, ds[j].layhoten());

if (strcmp(t1, t2) > 0) {

Thuebao t; t = ds[i];

ds[i] = ds[j];

ds[j] = t;

} } }

  • Tách tên

char *tachten(char*);

char *tachten(char *hoten) {

char *ten; int i;

//cat khoang trang phia sau ten

i = strlen(hoten) – 1;

while ((hoten[i] == ‘ ‘) && (i>=0))

i–;

//tach ten

while ((hoten[i] != ‘ ‘) && (i>=0)) i–;

ten = strdup(&hoten[i+1]);

return ten;

}

  • Nhập số lẻ 0.5

for(int i=0; i<3; i++) {

cout<<” – Nhap diem mon “<<(i+1)<<” : “;

cin>>diem[i];

float sole = diem[i] – (int)diem[i];

if(diem[i]<0 || diem[i]>10 || (sole!=0 && sole!=0.5) ) {

cout<<” ——- Nhap diem sai – Nhap lai —— “<<endl;

i–;

} } }

  • Bị điểm liệt

int thisinh::BiDiemLiet() {

return  (diemthi[0]==0 || diemthi[1]==0 || diemthi[2]==0);
}

D. THỪA KẾ

class Diemmau:public Diem
{
  private:
    int color;
  public:
   Diemmau();
   Diemmau(int, int, int);
   
   Diemmau(const Diemmau&);
   ~Diemmau();   
   void operator =(const Diemmau&);
   
   friend ostream& operator<<(ostream& os, Diemmau&);
   friend istream& operator>>(istream& is, Diemmau&);
   
   void nhap();
   void in();
};
Diemmau::Diemmau():Diem(){
    color=0;
}
Diemmau::Diemmau(int x, int y, int cor):Diem(x,y){
    color=cor;
}
Diemmau::Diemmau(const Diemmau &t):Diem(t){
    color=t.color;
}
Diemmau::~Diemmau(){}
void Diemmau::operator = (const Diemmau &t){
    color=t.color;
}
ostream& operator<<(ostream &os, Diemmau &t)
{
    Diem(t).xuat();
    os<<” Color: “<<t.color;
    return os;
}
istream& operator>>(istream &is, Diemmau &t){
    Diem(t).nhap();
    cout<<“\n Nhap mau: “;
    is>>t.color;
    return is;
}
void Diemmau::nhap(){
    Diem::nhap();
    cout<<“\n Nhap mau: “;
    cin>>color;
}
void Diemmau::xuat(){
    Diem::xuat();
    cout<<”  Color: “<<color;
}
int main(){
    cout<<“\n Khoi tao diem mau: “;
    Diemmau(2,3,5).xuat();
    Diemmau A;
    A.nhap();
    cout<<“\n Diem mau A: “<<A;
    getch();
}