Bai tap c++

22
1. Bài 24: Tạo lớp Stack chứa các số nguyên. Lớp này có các đặc điểm sau: Có một hàm tạo không đối số khởi tạo kích thước bằng 50, một hàm tạo một đối số khởi tạo kích thước ngăn xếp bằng giá trị của đối số, một hàm đẩy một phần tử vào ngăn xếp, một hàm lấy một phần tử ra khỏi ngăn xếp, một hàm kiểm tra ngăn xếp có rỗng không, một hàm trả về giá trị đỉnh ngăn xếp. Viết chương trình sử dụng lớp Stack, nhập vào một số nguyên dương n 50, đưa ra màn hình số nhị phân tương ứng. #include<iostream> using namespace std; //Khai bao lop class Stack { private: int m[100]; int size,t; public: Stack(); Stack(int kt); void push(int x); int pop(); int empty(); int top(); }; //====CHUONG TRINH CHINH==== int main() { int n,thuong,du; Stack S(32); do { cout<<"Nhap vao mot so nguyen duong (>=50): ";cin>>n; } while(n<50);

Transcript of Bai tap c++

Page 1: Bai tap c++

1. Bài 24: Tạo lớp Stack chứa các số nguyên. Lớp này có các đặc điểm sau: Có một hàm tạo không đối số khởi tạo kích thước bằng 50, một hàm tạo một đối số khởi tạo kích thước ngăn xếp bằng giá trị của đối số, một hàm đẩy một phần tử vào ngăn xếp, một hàm lấy một phần tử ra khỏi ngăn xếp, một hàm kiểm tra ngăn xếp có rỗng không, một hàm trả về giá trị đỉnh ngăn xếp. Viết chương trình sử dụng lớp Stack, nhập vào một số nguyên dương n 50, đưa ra màn hình số nhị phân tương ứng.

#include<iostream>using namespace std;//Khai bao lopclass Stack{ private: int m[100]; int size,t; public: Stack(); Stack(int kt); void push(int x); int pop(); int empty(); int top();};//====CHUONG TRINH CHINH====int main(){ int n,thuong,du; Stack S(32); do { cout<<"Nhap vao mot so nguyen duong (>=50): ";cin>>n; } while(n<50); thuong=n; while(thuong) { du=thuong%2; thuong/=2; S.push(du); } //Dua ra cout<<"So nhi phan cua "<<n<<" la: ";

Page 2: Bai tap c++

while(!S.empty()) cout<<S.pop(); cout<<endl; return 0;}//Dinh nghia cac ham thanh vien lop StackStack::Stack():size(50),t(-1){}Stack::Stack(int kt):size(kt),t(-1){}void Stack::push(int x){ if(t= =size-1) { cout<<"Ngan xep da day.";return; } m[++t]=x;}int Stack::pop(){ if(t==-1) { cout<<"Ngan xep da het."; return -1; } return m[t--]; }int Stack::empty(){ if(t==-1) return 1; return 0;}int Stack::top(){ if(t==-1) { cout<<"Ngan xep da het.";return -1; } return m[t];}

Page 3: Bai tap c++

2. Bài 29 Viết chương trình nhập vào n số phức. Tính tổng các số phức. Đưa các số phức đã nhập và kết quả tính được ra màn hình. Yêu cấu sử dụng chồng toán tử.#include<iostream>using namespace std;//Khai bao lopclass sophuc{ private: float thuc,ao; public: sophuc(); void nhap(); void hien(); sophuc operator+(const sophuc &sp2);};//====CHUONG TRINH CHINH=======int main(){ int n,i; sophuc m[100]; sophuc tong; cout<<"Nhap vao so luong so phuc: ";cin>>n; cout<<"Nhap vao cac so phuc:\n"; for(i=0;i<n;i++) { cout<<"Nhap vao so phuc thu "<<i+1<<":\n"; m[i].nhap(); } //Tinh tong for(i=0;i<n;i++) tong = tong + m[i]; //Dua ra cout<<"Cac so phuc da nhap la:"; for(i=0;i<n;i++) { cout<<"\n\tSo phuc thu "<<i+1<<": "; m[i].hien(); } cout<<"\nSo phuc tong la: "; tong.hien(); cout<<endl; return 0;}

//Dinh nghia cac ham thanh vien lop sophucsophuc::sophuc():thuc(0),ao(0)

Page 4: Bai tap c++

{}void sophuc::nhap(){ cout<<"Nhap phan thuc: ";cin>>thuc; cout<<"Nhap phan ao: ";cin>>ao;}void sophuc::hien(){ if(ao<0) cout<<thuc<<"-j"<<-ao; else cout<<thuc<<"+j"<<ao;}sophuc sophuc::operator+(const sophuc &sp2){ sophuc tg; tg.thuc = thuc + sp2.thuc; tg.ao = ao + sp2.ao; return tg;}

3. Vi du ve mang mot chieu (không hướng đối tượng) Nhập và mảng 1 chiều tính TBC các số lẻ và chia hết cho 3.

#include<iostream.h>int main(){ int n,i,tong=0,dem=0; int a[100]; cout<<"Nhap vao so luong so: "; cin>>n; cout<<"Nhap cac so cua day:\n"; for(i=0;i<n;i++) { cout<<"a"<<i+1<<"= ";cin>>a[i]; if(a[i]%2!=0 && a[i]%3==0) { tong+=a[i];dem++; } } //Dua ra if(dem!=0) cout<<"TBC cac so le va chia het cho 3 la: " <<(float)tong/dem; else cout<<"Trong day so ko co so le ma chia het cho 3.";

return 0;

Page 5: Bai tap c++

}

4. Bai 4 trong slide bai giang(không hướng đối tượng)- Nhập dãy số nguyên và hiển thị những số chắn và những số lẻ. yêu cầu sử dụng mảng động.#include<iostream>using namespace std;int main(){ int n,i,j,k,dem=0; int *a=NULL,*chan=NULL,*le=NULL; cout<<"Nhap vao so luong so cua day: ";cin>>n; //Cap phat mang dong chua du n so a = new int[n]; //Nhap vao cac so cout<<"Nhap vao cac so cua day:\n"; for(i=0;i<n;i++) { cout<<"a"<<(i+1)<<"= "; cin>>a[i]; } //Dem so phan tu chan for(i=0;i<n;i++) if(a[i]%2==0) dem++; //Kiem tra xem co so chan khong if(dem==0)//Chi co so le { le = new int[n]; for(i=0;i<n;i++) le[i]=a[i]; } if(dem==n)//Chi co so chan { chan=new int[dem]; for(i=0;i<n;i++) chan[i]=a[i]; } if(dem!=0 && dem!=n) { chan=new int[dem]; le=new int[n-dem]; j=0;k=0; for(i=0;i<n;i++) if(a[i]%2==0) chan[j++]=a[i]; else le[k++]=a[i]; }

Page 6: Bai tap c++

//Dua ra day so chan va le if(chan) { cout<<"\nDay cac so chan la:\n"; for(i=0;i<dem;i++) cout<<chan[i]<<" "; } if(le) { cout<<"\nDay cac so le la:\n"; for(i=0;i<n-dem;i++) cout<<le[i]<<" "; } //Giai phong bo nho da cap phat dong delete [] a; if(chan) delete [] chan; if(le) delete [] le;

cout<<endl; return 0;}

5.Vi du ve ham (không hướng đối tượng)- Cho dãy số nguyên tính tbc của dãy số. yêu cầu sử dụng mảng đọng và hàm để tính tbc. #include<iostream>using namespace std;//Khai bao cac hamfloat tbc(int *m,int n);//=======CHUONG TRINH CHINH=======int main(){ int n,i; int *a; cout<<"Nhap vao so luong so cua day: "; cin>>n; //Tao mang dong a=new int[n]; cout<<"Nhap vao cac so cua day:\n"; for(i=0;i<n;i++) { cout<<"a"<<(i+1)<<"= "; cin>>a[i]; } //Dua ra cout<<"Trung binh cong cua day so la: "<<tbc(a,n);

Page 7: Bai tap c++

cout<<endl; return 0;}//Dinh nghia cac hamfloat tbc(int *m,int n){ int tong=0; int i; for(i=0;i<n;i++) tong+=m[i]; return (float)tong/n;}

6. Vi du ve lop thoi gian#include<iostream>using namespace std;//Khai bao lopclass thoigian{ private: int gio,phut; public: void nhap(); void hien();};//=======CHUONG TRINH CHINH====int main(){ thoigian t; cout<<"Nhap thoi gian:\n"; t.nhap(); cout<<"Thoi gian da nhap la: "; t.hien(); cout<<endl; return 0;}//Dinh nghia cac ham thanh vien lop thoi gianvoid thoigian::nhap(){ char kt; cout<<"Nhap vao thoi gian (dang hh:mm): ";cin>>gio>>kt>>phut;}void thoigian::hien(){ cout<<gio<<':'<<phut;

Page 8: Bai tap c++

}

7. Vi du ve lop so phuc#include<iostream>using namespace std;//Khai bao lopclass sophuc{ private: float thuc,ao; public: sophuc(); sophuc(float a,float b); sophuc(const sophuc &sp);};//Khai bao ham thong thuongsophuc ham(sophuc sp);//======CHUONG TRINH CHINH======int main(){ sophuc sp1(2,3); sophuc sp2=sp1; sophuc sp3; sp3 = sp1 + sp2; cout<<endl; return 0;}//Dinh nghia hamsophuc::sophuc():thuc(0),ao(0){}sophuc::sophuc(float a,float b):thuc(a),ao(b){}sophuc::sophuc(const sophuc &sp):thuc(sp.thuc),ao(sp.ao){ cout<<"\nHam tao sao chep duoc thuc hien!@";}//Dinh nghia cac ham thong thuongsophuc ham(sophuc sp){ sophuc tg(10,20); return tg;}

Page 9: Bai tap c++

8. Vi du ve su ke thua//Lop hinh tru ke thua lop hinh tron#include<iostream>using namespace std;//Khai bao lopclass hinhtron{ private: float r; public: void nhap(); void hien(); float tinhDT();};class hinhtru:public hinhtron{ private: float h; public: void nhap(); void hien(); float tinhTT();};//===CHUONG TRINH CHINH===int main(){ hinhtru htru; cout<<"Nhap vao kich thuoc hinh tru:\n"; htru.nhap(); cout<<"Hinh tru da nhap la:\n"; htru.hien(); cout<<"\nThe tich hinh tru la: "<<htru.tinhTT(); cout<<endl; return 0;}//Dinh nghia ham thanh vien lop hinh tronvoid hinhtron::nhap(){ cout<<"Nhap vao ban kinh: ";cin>>r;}void hinhtron::hien(){ cout<<"Ban kinh la: "<<r;

Page 10: Bai tap c++

}float hinhtron::tinhDT(){ return 3.14*r*r;}//Dinh nghia ham thanh vien lop hinh truvoid hinhtru::nhap(){ hinhtron::nhap();//Nhap bk cout<<"Nhap chieu cao: ";cin>>h;}void hinhtru::hien(){ hinhtron::hien(); cout<<"\nChieu cao la: "<<h;}float hinhtru::tinhTT(){ return hinhtron::tinhDT()*h;}

9. Vi du ve su đa hình (dùng con trỏ)//Lop hinh tru ke thua lop hinh tron#include<iostream>using namespace std;//Khai bao lopclass hinhtron{ private: float r; public: virtual void nhap(); void hien(); float tinhDT();};class hinhtru:public hinhtron{ private: float h; public: void nhap(); void hien(); float tinhTT();};

Page 11: Bai tap c++

//===CHUONG TRINH CHINH===int main(){ hinhtron *p; p = new hinhtru; cout<<"Nhap vao kich thuoc hinh tru:\n"; p->nhap(); cout<<endl; return 0;}//Dinh nghia ham thanh vien lop hinh tronvoid hinhtron::nhap(){ cout<<"Nhap vao ban kinh: ";cin>>r;}void hinhtron::hien(){ cout<<"Ban kinh la: "<<r;}float hinhtron::tinhDT(){ return 3.14*r*r;}//Dinh nghia ham thanh vien lop hinh truvoid hinhtru::nhap(){ hinhtron::nhap();//Nhap bk cout<<"Nhap chieu cao: ";cin>>h;}void hinhtru::hien(){ hinhtron::hien(); cout<<"\nChieu cao la: "<<h;}float hinhtru::tinhTT(){ return hinhtron::tinhDT()*h;}

10. Vi du ve mang 2 chieu(không hướng đối tượng)- Nhập vào mảng 2 chiều và đếm số phần tử dương

#include<iostream.h>int main()

Page 12: Bai tap c++

{ int m,n,i,j,dem=0; float a[20][20]; cout<<"Nhap so hang: ";cin>>m; cout<<"Nhap so cot: ";cin>>n; cout<<"Nhap cac phan tu cua ma tran:\n"; for(i=0;i<m;i++) for(j=0;j<n;j++) { cout<<"a"<<i+1<<j+1<<"= ";cin>>a[i][j]; if(a[i][j]>0) dem++; } //Dua ma tran ra man hinh cout<<"Ma tran da nhap la:\n"; cout.precision(1); for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout.width(6);cout<<a[i][j]; } //Xuong dong cout<<endl; } cout<<"\nSo phan tu duong la: "<<dem; return 0;}

11. Vi du ve lop so phuc#include<iostream>using namespace std;//Khai bao lopclass sophuc{ private: float thuc,ao; public: sophuc(); sophuc(float a,float b); sophuc operator+(const sophuc &phai); void hien();};//======CHUONG TRINH CHINH======int main()

Page 13: Bai tap c++

{ sophuc sp1(2,3); sophuc sp2(4,6); sophuc sp3; sp3=sp1 + sp2; cout<<"\nsp1 = ";sp1.hien(); cout<<"\nsp2 = ";sp2.hien(); cout<<"\nsp3 = ";sp3.hien(); cout<<endl; return 0;}//Dinh nghia hamsophuc::sophuc():thuc(0),ao(0){}sophuc::sophuc(float a,float b):thuc(a),ao(b){}sophuc sophuc::operator+(const sophuc &phai){ sophuc tg; tg.thuc = thuc + phai.thuc; tg.ao = ao + phai.ao; return tg;}void sophuc::hien(){ if(ao>=0) cout<<thuc<<" + j"<<ao; else cout<<thuc<<" - j"<<-ao;}

12. Nhap vao kich thuoc cua n hinh trong do co ca hinh chu nhat, hinh tron, hinhtamgiac .Hien lai kich thuoc cac hinh da nhap.Thuc hien da hinh dong ham nhap va ham hien#include<iostream>using namespace std;//Khai bao lopclass hinh{ private: public: virtual void nhap()=0; virtual void hien()=0;

Page 14: Bai tap c++

};class hinhCN: public hinh{ private: float a,b; public: void nhap(); void hien();};class hinhTR: public hinh{ private: float r; public: void nhap(); void hien();};class hinhTG:public hinh{ private: float a,b,c; public: void nhap(); void hien(); };//Khai bao ham thong thuonghinh* nhapHinh();void hienKTHinh(hinh *h);//===CHUONG TRINH CHINH==int main(){ int n,i; char chon; hinh *m[50]; cout<<"Nhap vao so luong hinh: ";cin>>n; cout<<"Nhap kich thuoc cac hinh:\n"; for(i=0;i<n;i++) m[i]=nhapHinh(); //Dua ra kich thuoc cac hinh da nhap cout<<"Kich thuoc cac hinh da nhap la:"; for(i=0;i<n;i++) { cout<<"\nHinh thu "<<i+1<<":\n";

Page 15: Bai tap c++

hienKTHinh(m[i]); } cout<<endl; return 0;}//Dinh nghia ham thanh vien lop hinh chu nhatvoid hinhCN::nhap(){ cout<<"Nhap vao canh a: ";cin>>a; cout<<"Nhap vao canh b: ";cin>>b;}void hinhCN::hien(){ cout<<"Hinh chu nhat co kich thuoc la:\n"; cout<<"\tCanh a = "<<a; cout<<"\tCanh b = "<<b;}//Dinh nghia ham thanh vien lop hinh tronvoid hinhTR::nhap(){ cout<<"Nhap vao ban kinh: ";cin>>r;}void hinhTR::hien(){ cout<<"Hinh tron co ban kinh la: "<<r;}//Dinh nghia ham thanh vien lop hinh tam giacvoid hinhTG::nhap(){ cout<<"Nhap vao canh a: ";cin>>a; cout<<"Nhap vao canh b: ";cin>>b; cout<<"Nhap vao canh c: ";cin>>c;}void hinhTG::hien(){ cout<<"Hinh tam giac co kich thuoc la:\n"; cout<<"\tCanh a = "<<a; cout<<"\tCanh b = "<<b; cout<<"\tCanh c = "<<c;}//Dinh nghia ham thong thuonghinh* nhapHinh(){ char chon;

Page 16: Bai tap c++

hinh *h; cout<<"Nhap vao kich thuoc hinh gi (1-CN,2-TR,3-TG)"; cin>>chon; switch(chon) { case '1': h = new hinhCN; break; case '2': h = new hinhTR; break; case '3': h = new hinhTG; break; } h->nhap(); return h;}void hienKTHinh(hinh *h){ h->hien();}

13. Vi du ve xau kt (không hướng đối tượng)#include<iostream.h>#include<string.h>int main(){ int n,thuong,du; char sonp[17]="";

do { cout<<"Nhap vao mot so nguyen duong(>=0): ";cin>>n; } while(n<=0); //Tim xau ky tu so nhi phan thuong=n; while(thuong) { du=thuong%2; thuong/=2; if(du==1) strcat(sonp,"1");

Page 17: Bai tap c++

else strcat(sonp,"0"); } //Dao xau strrev(sonp); cout<<"So nhi phan cua "<<n<<" la: "<<sonp; return 0;}

14. Vi du ve lop doi tuong mang//Nhap vao mot day so nguyen, dua day so ra man hinh#include<iostream>using namespace std;//Khai bao lopclass mangint{ private: enum {size=100}; int m[size]; public: int& operator[](int i);};//======CHUONG TRINH CHINH=====int main(){ mangint a; int n,i; cout<<"Nhap vao so luong so: ";cin>>n; cout<<"Nhap vao cac so cua day:\n"; for(i=0;i<n;i++) { cout<<"a"<<i+1<<"= "; cin>>a[i]; } //Dua ra cout<<"Day so da nhap la:\n"; for(i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; return 0;}//Dinh nghia ham thanh vienint& mangint::operator[](int i){ if(i>=0 && i<=size-1) return m[i]; cout<<"Chi so phai >= 0 va <= "<<size-1;}

Page 18: Bai tap c++

15. Chong toan tu >> va << de co the dung cin, cout//voi doi tuong phan so#include<iostream>using namespace std;//Khai bao lopclass phanso{ private: int tu,mau; public: friend istream& operator>>(istream &vao,phanso &ps); friend ostream& operator<<(ostream &ra,phanso &ps);};//=======CHUONG TRINH CHINH======int main(){ phanso p1,p2; cout<<"Nhap vao 2 phan so (dang a/b): "; cin>>p1>>p2; cout<<"\nCac phan so da nhap la:\n"; cout<<p1<<" "<<p2; cout<<endl; return 0;}//Dinh nghia cac ham thong thuongistream& operator>>(istream &vao,phanso &ps){ char kt; vao>>ps.tu>>kt>>ps.mau; return vao;}ostream& operator<<(ostream &ra,phanso &ps){ ra<<ps.tu<<"/"<<ps.mau;}