You are on page 1of 32

1.

Ma trận:
#include <iostream>

#define max 10

using namespace std;

int n;

class matran

public:

int mt[max][max];

matran()

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

mt[i][j] = 0;

void nhapsl()

cout << endl;

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

cout << "Ma tran thu [" << i << "][" << j << "]: ";

cin >> mt[i][j];

cout << endl;


}

void insl()

for(int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

cout << mt[i][j] << " ";

cout << endl;

};

matran operator +(matran a, matran b)

matran c;

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

c.mt[i][j] +=a.mt[i][j] + b.mt[i][j];

return c;

matran operator -(matran a, matran b)

matran c;

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)


{

c.mt[i][j] += a.mt[i][j] - b.mt[i][j];

return c;

matran operator *(matran a, matran b)

matran c;

for (int i = 1; i <= n; i++)

for (int j = 1; j <= n; j++)

c.mt[i][j] += a.mt[i][j] * b.mt[i][j];

return c;

int main()

matran a,b,c,d;

cout << "nhap cap cua ma tran: ";

cin >> n;

cout << "Nhap ma tran thu nhat:";

a.nhapsl();

cout << "\nNhap ma tran thu hai:";

b.nhapsl();

system("cls");

cout << "\n Ma tran A:\n";

a.insl();
cout << "\n Ma tran B:\n";

b.insl();

c = a + b;

cout << "\n+Tong 2 ma tran AB:\n";

c.insl();

c = a - b;

cout << "\n+Hieu 2 ma tran AB:\n";

c.insl();

c = a * b;

cout << "\n+Nhan 2 ma tran AB:\n";

c.insl();

system("pause");

2. Date time
#include<iostream.h>

#include <conio.h>
using namespace std;
class date1
{
private:
int day;
int month;
int year;
static const int days[];
void helpIncrement();
public:
date1(int d=1,int m=1,int y=1900);
void setdate(int d,int m,int y);
date1 &operator++();
date1 &operator++(int);
date1 &operator+=(int addday);
bool leapyear(int y);//kiem tra nam nhuan
bool endofmonth(int d);//kiem tra ngay cuoi thang
friend ostream & operator<<(ostream & out,date1 &date);
};

const int date1::days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};


date1::date1(int d,int m,int y)
{
setdate(d,m,y);
}
void date1::setdate(int d,int m,int y)
{
month=(m>=1 && m<=12)? m:1;
year=(y>=1900 && y<=2100)?y:1900;
if( month==2 && leapyear(y))
day=(d>=1 && d<=29)? d:1;
else
day=(d>=1 && d<=days[month])? d:1;
}
bool date1::leapyear(int y)
{
if ((y%400 ==0)||(y%100 !=0 && y%4==0))
return true;
else
return false;
}
bool date1::endofmonth(int d)
{
if(month==2 && leapyear(year))
return d==29;
else
return d==days[month];
}
void date1::helpIncrement()
{
if(month==2 && leapyear(year))//ngay cuoi nam
{
day=1;
month=1;
++year;
}
else
if(endofmonth(day))//ngay cuoi thang
{
day=1;
++month;
}
else
++day;
}
date1 &date1::operator++()
{
helpIncrement();
return * this;
}
date1 &date1::operator++(int)
{
helpIncrement();
return * this;
}
date1 & date1::operator+=(int addday)
{
for(int i=0;i<addday;i++)
{
helpIncrement();
}
return *this;
}
ostream & operator<<(ostream & out, date1 & date)
{
char *monthname[13]={" " , "January","February","Match","April","May","June",
"July","August","September","October","November","December"};

out<< date.day <<"-"<<monthname[date.month]<<"-" <<date.year<<endl;


return out;
}
main()
{
date1 d1,d(23,5,2006);
cout<<d1;
cout<<d;
cout<<d++;
cout<<d;
d+=20;
cout<<d;
getch();
}

3. Stack
#include <conio.h>

#include <stdio.h>

#include <iostream>

#include <stdlib.h>

#include<fstream>

#include<cstring>

using namespace std;

class Node

{
public:

int Data;

Node*Next;

public:

Node *MakeNode(int x) //tao 1 Node

Node *P = (Node*) malloc(sizeof(Node));

P->Next = NULL;

P->Data = x;

return P;

};

class Cstack : public Node

{ private:

Node * top;

public:

Cstack() // Hàm tao

top = 0;

~Cstack() // ham huy

{}

int isemty() // ktra stack rong

if(top==0)

return 1;

else

return 0;

int length () // ktra do dai stack

{
Node *P = top;

int i=0;

while (P != NULL) //trong khi chua het Stack thi van duyet

i++;

P = P->Next;

return i;

int push(int a) // them 1 phan tu vao stack

Node *P = MakeNode(a);

P->Next = top;

top = P;

return 1;

int Top () // lay phan tu o dau stack

int i = top -> Data;

return i;

int pop() // xoa phan tu o dau stack

if (!isemty())

int x = top->Data; //luu lai gia tri

top = top->Next; //Xoa phan tu Top

return x;

void print ()
{

Node *P = top;

cout<<"\nDanh sach stack : ";

while (P != NULL)

cout<<""<<P->Data<<" , ";

P = P->Next;

printf("\n");

};

main ()

int i = 0;

Cstack s;

int luachon;

char filename[30];

int kt =0 ;

do

cout<<"\n(1).Kiem tra stack rong\n(2).Kiem tra so luong phan tu trong


stack\n(3).Them phan tu vao stack\n(4).Lay phan tu o dau stack\n(5).Xoa phan tu o dau
stack\n(6).In danh sach phan tu trong stack\n(7).Load\n(8).Save\n(9).Exit\nLua Chon Thao
Tac: ";

cin>>luachon;

switch(luachon)

case 1:

system("cls");

if(s.isemty() ==1 )

cout<<"\nStack rong";
}

else

cout<<"\nStack khong rong";

cout<<"\n---------------------------------\n";

break;

case 2:

system("cls");

cout<<"\nDo dai cua stack : "<< s.length();

cout<<"\n---------------------------------\n";

break;

case 3:

system("cls");

int them;

cout<<"\nSo them vao stack: ";

cin >> them;

if (s.push(them) == 1 )

cout<<"\nDa them "<<them<<" vao stack!";

else

cout <<"\nStack da day! Khong them "<<them<<" vao Stack duoc!";

cout<<"\n---------------------------------\n";

break;

case 4:

system("cls");

if(s.isemty() ==1 )

{
cout<<"\nStack rong ! Khong co phan tu de lay !";

else

cout<<"\n " << s.Top();

cout<<"\n---------------------------------\n";

break;

case 5:

system("cls");

cout<<"\nDa xoa "<<s.pop()<<" ra khoi Stack!";

cout<<"\n---------------------------------\n";

break;

case 6:

system("cls");

s.print();

cout<<"\n---------------------------------\n";

break;

case 9:

cout<<"Press Enter To Close";

break;

default:

system("cls");

cout<<"\n---------------------------------\n";

}while(luachon!=9);

return 0;

4. Lớp sinh viên cơ bản


#include<iostream>
#include<cstring>
using namespace std;
class sinhvien
{
char hoten[50];
int msv;
float diemtoan;
float diemanh;
float diemvan;

public:
sinhvien(){};
sinhvien(char ht[50], int msv1, float d1,float d2, float d3)
{
strcpy(hoten,ht);
msv=msv1;
diemtoan=d1;
diemanh=d2;
diemvan=d3;
}
friend istream & operator >>(istream &is, sinhvien &r)
{
fflush(stdin);
cout<<"nhap ho ten: "<<endl;
is.getline(r.hoten,50);

cout<<"nhap ma sinh vien:"<<endl;


is>>r.msv;
cout<<"nhap diem toan:"<<endl;
is>>r.diemtoan;
cout<<"nhap diem anh:"<<endl;
is>>r.diemanh;
cout<<"nhap diem van:"<<endl;
is>>r.diemvan;

}
friend ostream & operator <<(ostream &os, sinhvien &r)
{
cout<<"hoten "<<endl;
os<<r.hoten;
cout<<endl<<"msv ";
os<<r.msv;
cout<<endl<<"diem toan ";
os<<r.diemtoan;
cout<<endl<<"diem anh ";
os<<r.diemanh;
cout<<endl<<"diem van ";
os<<r.diemvan;

}
float dtb()const;

};
void swap(float *num1, float *num2)
{
float temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
}
float sinhvien::dtb()const
{
return ((diemtoan+diemanh+diemvan)/3);
}
int main()
{
int n;
sinhvien *sv;
sv=new sinhvien[n];
cout<<"nhap so luong sv";
cin>>n;
for (int i=0;i<n;i++)
{
cout<<""<<i+1<<endl;
cin>>sv[i];
}
for (int i=0;i<n;i++)
{
cout<<sv[i]<<endl;
}
cout<<endl<<"sau khi sap xep";
for (int i=0;i<n;i++)
for (int j=i+1;j<n;j++)
{
if (sv[i].dtb()<sv[j].dtb())
{
swap(sv[i],sv[j]);
}
}

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


{
cout<<sv[i];
cout<<endl<<"diem trung binh: "<<sv[i].dtb();
}
return 0;
}
5. Lớp danh sách sinh viên sử dụng lớp bạn

#include <iostream>
#include<cstring>
using namespace std;
class dssv;
class sinhvien
{
char hoten[50];
int msv;
float diemtoan;
float diemanh;
float diemvan;

public:
sinhvien(){};
sinhvien(char ht[50], int msv1, float d1,float d2, float d3)
{
strcpy(hoten,ht);
msv=msv1;
diemtoan=d1;
diemanh=d2;
diemvan=d3;
}
void nhap()
{
fflush(stdin);
cout<<"nhap ho ten: "<<endl;
cin>>hoten;
cout<<"nhap ma sinh vien:"<<endl;
cin>>msv;
cout<<"nhap diem toan:"<<endl;
cin>>diemtoan;
cout<<"nhap diem anh:"<<endl;
cin>>diemanh;
cout<<"nhap diem van:"<<endl;
cin>>diemvan;

}
void in()
{
cout<<"hoten "<<endl;
cout<<hoten;
cout<<endl<<"msv ";
cout<<msv;
cout<<endl<<"diem toan ";
cout<<diemtoan;
cout<<endl<<"diem anh ";
cout<<diemanh;
cout<<endl<<"diem van ";
cout<<diemvan<<endl;
}
float dtb()const
{
return ((diemtoan+diemanh+diemvan)/3);
}
friend class dssv;
};
class dssv
{
sinhvien *a;
int n;
public:

dssv(){
}
~dssv(){
}
void nhap()
{
cout<<"nhap so luong sv:";
cin>>n;
a=new sinhvien[n];
for (int i=0;i<n;i++)
{
cout<<"nhap sv thu "<<i+1<<endl;
a[i].sinhvien::nhap();
}
}
void in()
{
for (int i=0;i<n;i++)
{
a[i].sinhvien::in();
}
}
void sapxep()
{
sinhvien temp;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i].dtb()>a[j].dtb()){
temp=a[i];
a[i]=a[j];
a[j]=temp;

}
}
}
}

};

int main()
{
dssv d;
d.nhap();
d.in();
cout<<"sau khi sap xep: "<<endl;
d.sapxep();
d.in();
return 0;

6. Bài Phân Số
#include <iostream>

#include <cmath>

using namespace std;

class phanso{

int tu,mau;

public:

phanso(int a=1,int b=0)

tu=a;

mau=b;

~phanso()

friend istream & operator >> (istream & is, phanso & r)

{
cout<<"Nhap vao tu so: ";

is>> r.tu;

cout << "Nhap vao mau so: ";

is>> r.mau;

return is;

friend ostream & operator << (ostream & os, phanso &r);

phanso operator + (phanso &r)

int a1 = tu * r.mau + r.tu*mau ;

int b1 = mau * r.mau;

return phanso(a1,b1);

phanso operator - (phanso &r)

int a1 = (tu * r.mau)- (r.tu * mau);

int b1 = mau * mau;

return phanso(a1,b1);

phanso operator / (phanso &r)

int a1 = tu * r.mau;

int b1 = mau * r.tu;

return phanso(a1,b1);

phanso operator * (phanso &r)

int a1 = tu * r.tu;

int b1 = mau *r.mau;

return phanso(a1,b1);
}

bool operator == (phanso &r)

return (tu == r.tu && mau == r.mau );

bool operator < (phanso & r)

int a1 = tu * r.mau;

int b1 = r.tu * mau;

return (a1 < b1);

bool operator > (phanso & r)

int a1 = tu * r.mau;

int b1 = r.tu * mau;

return (a1 > b1);

int rutgon();

};

int phanso::rutgon()

int a = tu;

int b = mau;

while ( a != b)

if (a > b)

a = a - b;

else

b = b - a;

}
}

return a;

ostream & operator << (ostream & os, phanso &r)

os<< r.tu<< "/" <<r.mau<<" "<<endl ;

return os;

int main()

phanso ps[100];

int n,i,choose;

cout<< "Nhap so luong phan so: ";

cin >> n;

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

cout<< "Nhap thong tin phan so thu " << i+1 << ":"<< endl;

cin >> ps[i];

cout<<"(1) In ra mang vua nhap: "<<endl;

cout<<"(2) Tong cac phan so: "<<endl;

cout<<"(3) Hieu cac phan so: "<<endl;

cout<<"(4) Tich cac phan so: "<<endl;

cout<<"(5) Thuonh cac phan so: "<<endl;

cout<<"(0) Thoat...!"<<endl;

while (choose != 0)

cout<<"Moi ban chon: ";

cin >> choose;

if(choose == 1)

{
cout<<"Mang vua nhap:"<<endl;

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

cout<<ps[i];

if(choose == 2)

phanso s(0,1);

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

s=s+ps[i];

cout<<"Tong cac phan so la: "<<s<<endl;

if(choose == 3)

phanso s1 = ps[0];

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

s1=s1-ps[i];

cout<<"Hieu cac phan so la: "<<s1<<endl;

if(choose == 4)

phanso s2(1,1);

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

s2=s2*ps[i];

cout<<"Tich cac phan so la: "<<s2<<endl;

if(choose == 5)

phanso s3=ps[0];

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

s3=s3/ps[i];

cout<<"Thuong cac phan so la: "<<s3<<endl;


}

return 0;

7 . Hàng đợi
#include <iostream>

using namespace std;

#define Max 100

class queue

private:

int front,tail,y; //dau va cuoi hang doi

int nodes[Max];

public:

queue() // cau tu khoi dong hang doi

front = 0;

tail = -1;

void nhap()

cout<<"nhap cac phan tu trong hang doi:"<<endl;

cin>>y;}

void in()

cout<<y<<" ";

int empty(); // kiem tra hang doi bi rong khong


int full(); // kiem tra hang doi co bi day chua

void insert(int x); // them mot nut vao cuoi hang doi

int remove(); // xoa nut o dau hang doi

int queuesize(); // xac dinh so nut co trong hang doi

};

int queue::empty()

return ((tail < front) ? true : false);

int queue::full()

return ((tail == Max-1) ? true : false);

void queue::insert(int x)

if(full())

cout<<"Hang doi bi day";

else

nodes[++tail] = x;

int queue::remove()

if(empty())

cout<<"hang doi bi rong";

else

return(nodes[front++]);

int queue::queuesize()

return(tail - front + 1);

}
int main()

queue *q1;

int i,n,x,y;

cout<<"nhap so phan tu "<<endl;

cin>>n;

q1=new queue[n];

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

q1->nhap();

cout<<"queue: ";

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

q1->in();

cout<<"nhap phan tu muon them"<<endl;

cin>>x;

q1->insert(x);

return 0;

8. Class Time
#include<iostream.h>
#include<conio.h>
#include<math.h>
using namespace std;
class Time
{
int h,m,s;
public:
Time(){h=m=s=0;}
Time(int h1,int m1, int s1)
{
h=h1;
m=m1;
s=s1;
}
friend istream &operator>>(istream &is,Time &a);
friend ostream &operator<<(ostream &os,Time &a);
friend Time operator+(Time a,Time b);
Time operator+(int ss);
friend Time operator+(int ss,Time a);
Time operator-(int ss);
int operator-(Time b);
friend int operator==(Time a,Time b)
{
return (int)(doi(a)==doi(b));
}
friend int doi(Time a);
friend Time doi(int n);
};
int doi(Time a)
{
return (int)a.h*3600+a.m*60+a.s;
}
Time doi(int n)
{
Time a;
a.h=n/3600;
a.m=n%3600/60;
a.s=n%60;
return a;
}
istream &operator>>(istream &is,Time &a)
{
cout<<”\n\aNhap thoi gian:”;
cout<<”\nNhap gio: “;
is>>a.h;
cout<<”\nNhap phut: “;
is>>a.m;
cout<<”\nNhap giay: “;
is>>a.s;
return is;
}
ostream &operator<<(ostream &os,Time &a)
{
os<<a.h<<” : “<<a.m<<” : “<<a.s<<endl;
return os;
}
Time operator+(Time a,Time b)
{
Time c;
c.h=a.h+b.h;
c.m=a.m+b.m;
c.s=a.s+b.s;
return doi(doi(c));
}
Time Time::operator+(int ss)
{
Time b;
b.h=h;
b.m=m;
b.s=s+ss;
return doi(doi(b));
}
Time operator+(int ss,Time a)
{
Time b;
b.h=a.h;
b.m=a.m;
b.s=a.s+ss;
return doi(doi(b));
}
Time Time::operator-(int ss)
{
Time b;
b.h=h;
b.m=m;
b.s=s-ss;
return doi(doi(b));
}
int Time::operator-(Time b)
{
Time c;
c.h=h-b.h;
c.m=m-b.m;
c.s=s-b.s;
return doi(c);
}
int main()
{
Time a,b,c;
int x;
cout<<”Nhap Thoi gian a:”<<endl;
cin>>a;
cout<<”\nNhap Thoi gian b:”<<endl;
cin>>b;
//Cong
c=a+b;
cout<<”\nCong Thoi gian: a+b= “<<c;
cout<<”\nNhap so giay muon cong them : “;
cin>>x;
c=a+x;
cout<<”\nCong Thoi gian voi giay: a+x= “<<c;
c=x+a;
cout<<”\nCong giay voi thoi gian: x+a= “<<c;
//Tru
int kq=a-b;
cout<<”\nTru Thoi gian: a-b= “<<kq<<” (s)”<<endl;
cout<<”\nNhap thoi gian de tru : “;
cin>>x;
c=a-x;
cout<<”\nKet qua : “<<c<<endl;
cout<<”\nSo sanh a va b: “;
if (a==b) cout<<” a==b “;
else cout<<” a!=b “;
system(“pause”);
return 0;
}
9. Thừa kế, đa thể.
Sử dụng kỹ thuật thừa kế, đa thể cài đặt các lớp CKH (cho khách hàng gửi có
kỳ hạn), KKH (cho khách hàng gửi không kỳ hạn) với các thông tin và các chức
năng bổ sung, sửa đổi (nếu có). Trong cả 2 lớp CKH, KKH phải đưa ra số tiền cuối
cùng khách hàng được nhận về (cả gốc và lãi).
Viết hàm nhập, xuất một danh sách n khách hàng của ngân hàng trên. Với n
là một số nguyên dương n<=100.

class KKH:public KH{


public:
void Nhap(){
KH::Nhap();
}
void Xuat(){
KH::Xuat();
}
int Tinhlai(){
return KH::Tinhlai();
}
};

class CKH:public KH{


int kyhan;
public:
void Nhap(){
KH::Nhap();
cout<<"Nhap ky han (thang): ";
cin>>kyhan;
}
void Xuat(){
cout<<"\n\tKy Han: "<<kyhan<<" thang"<<endl;
KH::Xuat();
}
int Tinhlai(){
if(sothang>=kyhan)
return tiengui*(laixuat + 0.02)*sothang;
return KH::Tinhlai();
}
};

main(){
KH *kh[100];
int i, n;
cout<<"Nhap so khach hang: ";
cin>>n;
for(i=0; i<n; i++)
{
int choose;
cout<<"Khong ky han (1), Co Ky han (2): ";
cin>>choose;
if(choose==1)
kh[i] = new KKH();
if(choose==2)
kh[i] = new CKH();
kh[i]->Nhap();
}

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


kh[i]->Xuat();
for(i=0; i<n; i++)
delete kh[i];
return 0;
}
10. Khuôn hình (Template)
Xây dựng khuôn hình lớp dãy số n phần tử, các phần tử trong dãy số có thể là kiểu
int, long, float, double,…Khuôn hình có các phương thức: khởi tạo một dãy số rỗng,
tìm vị trí phần tử lớn nhất đầu tiên của dãy. Các hàm toán từ >>, << để nhập, xuất 1
dãy số
template<class T> // hoặc template<typename T>
class DaySo{
int soPhanTu;
T * dayso;
public:
DaySo(){
soPhanTu = 0;
dayso = NULL;
}
int vtriLonNhatDauTien(){
int vt = 0;
for(int i =1; i< soPhanTu; i++){
if(dayso[i]>dayso[vt]){
vt = i;
}
}
return vt;
}
friend istream & operator>>(istream & is, DaySo<T> & ds){
cout<<"Nhap so phan tu : ";
is>>ds.soPhanTu;
ds.dayso = new T[ds.soPhanTu];
for(int i =0; i<ds.soPhanTu;i++){
cout<<"Nhap a["<< i << "] : ";
is>>ds.dayso[i];
}
return is;
}
friend ostream & operator<<(ostream & os, DaySo<T> & ds){
for(int i=0;i<ds.soPhanTu;i++){
os<<ds.dayso[i]<<" ";
}
return os;
}
};

11.Ràng buộc động , đa thể.


Dựa vào kĩ thuât đa thể và ràng buộc động xây dựng lớp hcn vs các thuộc tính dữ
liệu là chiều dài và chiều rộng ; lớp tam giác vs các thuộc tính dữ liệu là độ dài 3
cạnh; lớp hình tròn vs thuộc tính dl là bán kính. Viết ctrinh cho phép nhập vào 1
mảng các hình ở trên sau đó in ra chu vi và S của chúng.
class HCN:public Hinh{
float dai, rong;
public:
void Nhap()
{
cout<<"Nhap chieu dai: ";
cin>>dai;
cout<<"Nhap chieu rong: ";
cin>>rong;
}
float ChuVi(){
return (dai+rong)*2;
}
float DienTich(){
return dai*rong;
}
void Xuat(){
cout<<"\nHinh Chu Nhat:"<<endl;
Hinh::Xuat();
}
};

class TamGiac:public Hinh{


float a, b, c, p;
public:
void Nhap()
{
cout<<"Nhap 3 canh tam giac: ";
cin>>a>>b>>c;
}
float ChuVi(){
return (a+b+c);
}
float DienTich(){
p=ChuVi()/2;
return (float)sqrt(p*(p-a)*(p-b)*(p-c));
}
void Xuat(){
cout<<"\nHinh Tam Giac:"<<endl;
Hinh::Xuat();
}
};

class Tron:public Hinh{


float r;
public:
void Nhap(){
cout<<"Nhap ban kinh: ";
cin>>r;
}
float ChuVi(){
return 2*M_PI*r;
}
float DienTich(){
return M_PI*r*r;
}
void Xuat(){
cout<<"\nHinh Tron: "<<endl;
Hinh::Xuat();
}
};
int main(){
Hinh *hinh[1000];
int n, i;
cout<<"Nhap so Hinh: ";
cin>>n;
for (i=0; i<n; i++)
{
int choose;
cout<<"Hinh cn (1), hinh Tam giac (2), hinh tron (3): ";
cin>>choose;
switch(choose){
case 1:
hinh[i]=new HCN();
break;
case 2:
hinh[i]=new TamGiac();
break;
case 3:
hinh[i]=new Tron();
break;
}
hinh[i]->Nhap();
}
for(i=0; i<n; i++)
{
hinh[i]->Xuat();
}
for(i=0; i<n; i++)
{
delete hinh[i];
}
return 0;
}

You might also like