Giải bài tập OOP C++ chi tiết - Đề cương ôn tập Đại học Điện lực

Tuyển tập bài tập Lập trình Hướng đối tượng C++ có lời giải chi tiết. Tài liệu tham khảo đề cương ôn tập môn OOP từ Đại học Điện lực.

Trường đại học

Đại học Điện lực

Chuyên ngành

Nguyên lý Lập trình Hướng đối tượng

Người đăng

Ẩn danh

Thể loại

Đề cương ôn tập

2020-2021

200
0
0

Phí lưu trữ

45 Point

Tóm tắt

I. Giới thiệu về Lập trình Hướng đối tượng C

Lập trình hướng đối tượng C++ là một trong những ngôn ngữ lập trình quan trọng nhất trong giáo dục và phát triển phần mềm. Nó kết hợp tính linh hoạt của lập trình procedural với sức mạnh của lập trình hướng đối tượng. OOP (Object-Oriented Programming) cho phép các lập trình viên tổ chức mã theo các lớp (class)đối tượng (object), giúp code dễ bảo trì, tái sử dụng và mở rộng hơn. Các bài tập lập trình hướng đối tượng C++ giúp sinh viên nắm vững các khái niệm cơ bản như kế thừa (inheritance), đa hình (polymorphism), và đóng gói (encapsulation). Qua các bài tập thực hành, học viên sẽ hiểu rõ cách xây dựng các ứng dụng phức tạp một cách hiệu quả.

1.1. Khái niệm cơ bản về Lớp và Đối tượng

Lớp (class) là một khuôn mẫu để tạo ra các đối tượng (object). Mỗi lớp có thuộc tính (attributes)phương thức (methods). Thuộc tính là các biến lưu trữ dữ liệu, còn phương thức là các hàm thực hiện các hành động. Trong lập trình C++, chúng ta khai báo lớp bằng từ khóa class, sau đó tạo các đối tượng từ lớp đó. Hàm khởi tạo (constructor)hàm huỷ (destructor) là những phương thức đặc biệt quan trọng.

1.2. Tầm quan trọng của các bài tập C

Các bài tập giải bài tập lập trình hướng đối tượng C++ giúp sinh viên rèn luyện kỹ năng thực hành. Thông qua các bài toán thực tế như quản lý phương tiện giao thông hay quản lý nhân viên, học viên sẽ áp dụng các kiến thức lý thuyết vào giải quyết vấn đề cụ thể. Điều này tạo nền tảng vững chắc cho sự phát triển nghề nghiệp.

II. Hướng dẫn giải Bài tập 1 Lớp Phương tiện Giao thông

Bài tập lập trình hướng đối tượng C++ đầu tiên tập trung vào xây dựng lớp PhuongTienGiaoThong với các thuộc tính như hãng sản xuất, tên phương tiện, năm sản xuất và vận tốc tối đa. Bước tiếp theo là tạo lớp OTo kế thừa từ lớp cha, bổ sung các thuộc tính mới như số chỗ ngồi, kiểu động cơ và số bánh xe. Vận tốc cơ sở được tính bằng công thức: vận tốc tối đa chia cho số bánh xe. Điều này minh họa khái niệm kế thừa (inheritance) rất tốt. Nạp chồng toán tử (operator overloading) < cho phép so sánh hai ô tô dựa trên vận tốc cơ sở. Chương trình chính sẽ nhập dữ liệu, hiển thị thông tin, và sắp xếp danh sách theo vận tốc cơ sở.

2.1. Xây dựng lớp PhuongTienGiaoThong

Lớp PhuongTienGiaoThonglớp cơ sở (base class) có các thuộc tính protected để cho phép lớp con (derived class) truy cập. Các phương thức bao gồm: hàm khởi tạo (constructor) khởi tạo giá trị mặc định, hàm nhập (input method) lấy dữ liệu từ bàn phím, và hàm xuất (output method) hiển thị thông tin. Điều quan trọng là sử dụng protected thay vì private để các lớp kế thừa có thể truy cập dữ liệu.

2.2. Kế thừa và mở rộng lớp OTo

Lớp OTo kế thừa từ PhuongTienGiaoThong bằng cú pháp class oto:public ptgt. Nó bổ sung thuộc tính như số chỗ ngồi, kiểu động cơ và số bánh xe. Phương thức vantoccoso() tính vận tốc cơ sở dựa trên dữ liệu kế thừa. Nạp chồng toán tử < cho phép so sánh các đối tượng OTo một cách tự nhiên, hỗ trợ sắp xếp danh sách.

III. Hướng dẫn giải Bài tập 2 Lớp Nhân viên

Bài tập lập trình hướng đối tượng C++ thứ hai liên quan đến quản lý nhân viên thông qua lớp NHANVIEN kế thừa từ lớp NGUOI. Lớp NGUOI chứa thông tin cơ bản như mã định danh và họ tên, được bảo vệ bằng access modifier private. Lớp NHANVIEN bổ sung năm sinh, hệ số lươngtiền phụ cấp (static attribute). Hàm tính lương áp dụng công thức: hệ số lương × 1550 + tiền phụ cấp. Nạp chồng toán tử > cho phép so sánh nhân viên theo hệ số lương. Chương trình sẽ nhập dữ liệu n nhân viên, hiển thị thông tin kèm lương tính toán, và sắp xếp giảm dần theo hệ số lương.

3.1. Thiết kế lớp NGUOI và NHANVIEN

Lớp NGUOI sử dụng access modifier private để bảo vệ dữ liệu, thực hiện đóng gói (encapsulation). Lớp NHANVIEN kế thừa công khai và thêm các thuộc tính riêng. Thuộc tính static (tĩnh) tienphucp được chia sẻ giữa tất cả các đối tượng NHANVIEN, giảm lãng phí bộ nhớ.

3.2. Tính lương và sắp xếp nhân viên

Hàm tính lương thực hiện phép tính dựa trên hệ số lương và hằng số cơ bản 1550. Nạp chồng toán tử > so sánh nhân viên để hỗ trợ sắp xếp (sorting). Sử dụng thuật toán bubble sort hoặc các hàm sắp xếp sẵn có để xếp danh sách theo thứ tự giảm dần của hệ số lương.

IV. Kỹ thuật lập trình nâng cao trong OOP C

Lập trình hướng đối tượng C++ cần nắm vững các kỹ thuật nâng cao để viết code hiệu quả. Nạp chồng toán tử (operator overloading) là công cụ mạnh mẽ cho phép các đối tượng tương tác theo cách tự nhiên và trực quan. Kế thừa đa cấpđa hình (polymorphism) mở rộng khả năng tái sử dụng mã. Thuộc tính tĩnh (static)phương thức tĩnh giúp quản lý dữ liệu chung giữa các đối tượng. Hàm bạn (friend function) cho phép truy cập các thành phần private/protected của lớp. Việc hiểu rõ các khái niệm này giúp lập trình viên C++ viết các ứng dụng phức tạp, dễ bảo trì, và tuân theo các tiêu chuẩn lập trình chuyên nghiệp.

4.1. Nạp chồng toán tử và so sánh đối tượng

Nạp chồng toán tử cho phép định nghĩa lại hành động của các toán tử (<, >, ==, v.v.) cho lớp tùy chỉnh. Ví dụ, nạp chồng < cho lớp OTo dựa trên vận tốc cơ sở. Điều này làm code trở nên trực quandễ đọc, đặc biệt khi sắp xếp hoặc so sánh các đối tượng.

4.2. Quản lý dữ liệu tĩnh và sắp xếp hiệu quả

Thuộc tính tĩnh (static) trong lập trình C++ giữ một giá trị duy nhất cho tất cả đối tượng. Tiền phụ cấp là ví dụ điển hình. Sắp xếp hiệu quả sử dụng các thuật toán tối ưunạp chồng toán tử để so sánh nhanh chóng, hỗ trợ các chương trình quản lý dữ liệu lớn.

21/12/2025

Trích đoạn nội dung tài liệu

lOMoARcPSD|14822991 **** ĐỀ TÀI: sử dụng các kiểu dữ liệu như ảnh, dữ liệu thuộc tính, dữ liệu text + Tối đa 1 nhóm làm báo cáo gồm: 2-3 thành viên + Thuật toán:Marketing 2 ngườicăncùng làm 1 thuật toán, nhưng khác bản (Đại học Điện lực) nhau về dữ liệu StuDocu is not sponsored or endorsed by any college or university Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 ĐỀ CƯƠNG ÔN TẬP MÔN Nguyên lý lập trình hướng đối tượng Kỳ 1 năm 2020-2021, Khoa Công nghệ thông tin, Đại học Điện lực Bài 1, Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau: - Xây dựng lớp PhuongTienGiaoThong (phương tiện giao thông): +) Thuộc tính: Hãng sản xuất (chuỗi ký tự), Tên phương tiện (chuỗi ký tự), Năm sản xuất (số nguyên), Vận tốc tối đa (float). +) Phương thức: Hàm thiết lập, hàm nhập, hàm xuất. - Xây dựng lớp OTo (ô tô) kế thừa lớp PhuongTienGiaoThong bổ sung thêm: Thuộc tính: Số chỗ ngồi (int), Kiểu động cơ (chuỗi ký tự),Số bánh xe(kiểu nguyên). Phương thức: - Hàm thiết lập, hàm huỷ bỏ, hàm nhập, hàm xuất.

- Vận tốc cơ sở: được tính bằng vận tốc tối đa chia cho số bánh. - Nạp chồng toán tử < (phương tiện giao thông có “Vận tốc cơ sở” nhỏ hơn thì nhỏ hơn). Chương trình chính: 1) Nhập từ bàn phím thông tin của một phương tiện giao thông PhuongTienGiaoThong. 2) Hiển thị thông tin của phương tiện giao thông vừa nhập ra màn hình.

3) Nhập thông tin cho n đối tượng OTO bao gồm: Hãng sản xuất, Tên phương tiện, Năm sản xuất, Vận tốc tối đa, số chỗ ngồi, kiểu động cơ. 4) In ra màn hình thông tin của n đối tượng OTO cùng với vận tốc cơ sở. 5) Sắp xếp danh sách các đối tượng OTO theo thứ tự giảm dần của vận tốc cơ sở. Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 #include<iostream> #include<string> #include<math.h> using namespace std; class ptgt{ protected: Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 string hsx; string tenpt; int namsx; float vttd; public: ptgt() { this->hsx=""; this->tenpt=""; this->namsx=0; this->vttd=0; } ~ptgt() { this->hsx; this->tenpt; this->namsx; this->vttd; } void nhap() { cout<<"\nNhap ten hang san xuat:";fflush(stdin); getline(cin,this->hsx); cout<<"\nNhap ten phuong tien:";fflush(stdin); getline(cin,this->tenpt); cout<<"\nNhap nam san xuat:";cin>>this->namsx; cout<<"\nNhap van toc toi da:"; cin>>this->vttd; Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 } void xuat() { cout<<"\nHang san xuat la:"<<hsx<<"\nPhuong tien:"<<tenpt<<"\nNam san xuat:"<<namsx<<"\nVan toc toi da:"<<vttd; } }; class oto:public ptgt { private: int sochongoi; string kdc; int sobanhxe; public: oto() { this->sochongoi=0; this->kdc=""; this->sobanhxe=0; } ~oto(){ this->sochongoi; this->kdc; this->sobanhxe; } void nhap1() { Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 ptgt::nhap(); cout<<"\nnhap so cho ngoi:";cin>>this->sochongoi; cout<<"\nNhap kieu dong co:";fflush(stdin); getline(cin,this->kdc); cout<<"\nNhap so banh xe:"; cin>>this->sobanhxe; } void xuat1() { ptgt::xuat(); cout<<"\nSo cho ngoi:"<<sochongoi<<"\nKieu dong co:"<<kdc<<"\nSo banh xe:"<<sobanhxe; } float vantoccoso() { return (vttd/sobanhxe); } friend int operator <(oto &a,oto &b) { if(a.vantoccoso()) return 1; else return 0; } }; int main() { ptgt pt; cout<<"\nNhap 1 doi tuong phuong tien giao thong:"; Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 pt.nhap(); cout<<"\nXuat doi tuong phuong tien giao thong:"; pt.vantoccoso(); } for(int i=0;i<n-1;i++) { for(int j=j+1;j<n;j++) { if(t[i]<t[j]) { tg=t[i]; t[i]=t[j]; t[j]=tg; } } } cout<<"\nDanh sach doi tuong sau khi sap xep la:"; Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 for(int i=0;i<n;i++) { t[i].vantoccoso(); } } Bài 2, Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau: Xây dựng lớp đối tượng NGUOI gồm: - Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã định danh, họ tên người - Phương thức: o Hàm khởi tạo, hàm huỷ, hàm nhập, hàm xuất.

- Xây dựng lớp đối tượng NHANVIEN kế thừa từ lớp NGUOI có thêm o Thuộc tính thêm: năm sinh, hệ số lương o Thuộc tính tĩnh: tiền phụ cấp o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=hệ số lương x 1550 + tiền phụ cấp) o Hàm nạp chồng toán tử > để so sánh hai Nhân viên theo hệ số lương (nhân viên có hệ số lương cao hơn sẽ lớn hơn). Chương trình chính: 1) Nhập từ bàn phím thông tin của một người bao gồm: mã định danh, họ tên người. 2) Hiển thị thông tin người đó ra màn hình. 3) Nhập thông tin cho n đối tượng NHANVIEN bao gồm: mã định danh, họ tên nhân viên, năm sinh, hệ số lương.

4) In ra màn hình thông tin của n đối tượng NHANVIEN cùng với lương. 5) Sắp xếp danh sách nhân viên theo thứ tự giảm dần theo hệ số lương. Hiển thị danh sách sau khi sắp. Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 #include<iostream> using namespace std; #include<string> #include<math.h> class nguoi{ private: Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 string madd; string hoten; public: nguoi() { this->madd =""; this->hoten=""; } ~nguoi() { this->madd; this->hoten; } void nhap() { cout<<"\nNhap ma dinh danh:";fflush(stdin);getline(cin,this->madd); cout<<"\nNhap ho ten:";fflush(stdin);getline(cin,this->hoten); } void xuat() { cout<<"\nMa dinh danh:"<<madd<<"\nHo ten:"<<hoten; } }; class nhanvien:public nguoi { protected: int namsinh; Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 float hesoluong; static float tienphucap; public: nhanvien() { this->namsinh=0; this->hesoluong=0; } ~nhanvien() { this->namsinh; this->hesoluong; } void nhap1() { nhanvien::nhap(); cout<<"\nNhap nam sinh:"; cin>>this->namsinh; cout<<"\nNhap he so luong:"; cin>>this->hesoluong; } void xuat1() { nhanvien::xuat(); cout<<"\nNam sinh:"<<namsinh<<"\nHe so luong:"<<hesoluong; } float luong() Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 { return (hesoluong*1550+tienphucap); } friend int operator>(nhanvien &a,nhanvien &b) { if(a.nhap(); cout<<"\nXuat thong tin cua nhan vien vua nhap:"; ng.xuat(); nhanvien *v,tg; int n; float tong=0; cout<<"\nNhap doi tuong nhan vien:"; cin>>n; v=new nhanvien[n]; cout<<"\nNhap tung doi tuong nhan vien:"; for(int i=0;i<n;i++) Downloaded by Hoàng Anh (imbay2003@gmail.luong(); } } Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 Bài 3, Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau: Xây dựng lớp đối tượng NGUOI gồm: - Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã định danh, họ tên người - Phương thức: o Hàm khởi tạo, hàm nhập, hàm xuất.

- Xây dựng lớp đối tượng NHANVIEN kế thừa từ lớp NGUOI có thêm o Thuộc tính thêm: năm sinh, hệ số lương o Thuộc tính tĩnh: tiền phụ cấp o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=hệ số lương x 1550 + tiền phụ cấp) Chương trình chính: 1) Nhập từ bàn phím thông tin của một người bao gồm: mã định danh, họ tên người. 2) Hiển thị thông tin người đó ra màn hình. 3) Nhập thông tin cho n đối tượng NHANVIEN bao gồm: mã định danh, họ tên nhân viên, năm sinh, hệ số lương. 4) In ra màn hình thông tin của n đối tượng NHANVIEN cùng với lương.

5) In ra màn hình họ tên các nhân viên có lương cao nhất. Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 #include<iostream> #include<string> using namespace std; class nguoi { protected: Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 string madd; string hoten; public: nguoi() { this->madd=""; this->hoten=""; } ~nguoi() { this->madd; this->hoten; } void nhap() { cout<<"\n nhap ma dinh danh: "; fflush(stdin); getline(cin,this->madd); cout<<"\n nhap ho ten: "; getline(cin,this->hoten); } void xuat() { cout<<"\n ma dinh danh: "<<madd<<"\n ho ten: "<<hoten; } }; class nhanvien: public nguoi Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 { private: int namsinh; float hsluong; static float tienpc; public: nhanvien() { this->namsinh=0; this->hsluong=0; } ~nhanvien() { this->namsinh; this->hsluong; } void nhap() { nguoi::nhap(); cout<<"\n nhap nam sinh: "; cin>>this->namsinh; cout<<"\n nhap he so luong: "; cin>>this->hsluong; } void xuat() { nguoi::xuat(); Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 cout<<"\n nam sinh: "<<namsinh<<"\n he so luong: "<<hsluong; } float luong() { return (hsluong*141 +tienpc); } string ten() { return hoten; } }; float nhanvien::tienpc=100; int main() { nguoi ng; nhanvien *nv; cout<<"\n nhap thong tin 1 nguoi: "; ng.nhap(); cout<<"\n xuat thong tin nguoi do: "; ng.xuat(); int n; float tong=0; cout<<"\n nhap so nhan vien: "; cin>>n; nv=new nhanvien[n]; cout<<"\n nhap thong tin tung nhan vien: "; for(int i=0;i<n;i++) Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 nv[i].ten(); } Bài 4, Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau: Xây dựng lớp đối tượng DATE gồm: - Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): ngày, tháng, năm - Phương thức: o Hàm khởi tạo, hàm nhập, hàm xuất. - Xây dựng lớp đối tượng CANBO kế thừa từ lớp DATE có thêm o Thuộc tính: mã cán bộ, tên cán bộ, ngày tháng năm sinh(kế thừa từ lớp DATE), lương cơ bản o Thuộc tính tĩnh: tiền phụ cấp chức vụ o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính lương (=lương cơ bản + tiền phụ cấp chức vụ) Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 Chương trình chính: 1) Nhập từ bàn phím thông tin của một ngày tháng năm, 2) Hiển thị thông tin ngày tháng năm đó ra màn hình. 3) Nhập thông tin cho n đối tượng CANBO.

4) In ra màn hình thông tin của n đối tượng CANBO. 5) Hiển thị ra màn hình lương của n cán bộ. 6) In ra màn hình tên các cán bộ có lương thấp nhất. #include<iostream> #include<string> using namespace std; class date { private: int d; int m; int y; public: nguoi() { Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 this->d=0; this->m=0; this->y=0; } ~date() { this->d; this->m; this->y; } void nhap() { cout<<"\n nhap ngay: "; cin>>this->d; cout<<"\n nhap thang: "; cin>>this->m; cout<<"\nNhap nam:"; cin>>this->y; } void xuat() { cout<<"\nNgay: "<<d<<"\nThang: "<<m<<"\nNam:"<<y; } }; class canbo: public date { private: Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 string macanbo; string tencanbo; int luongcb; static float tienpcchucvu; public: canbo() { this->macanbo=""; this->tencanbo=""; this->luongcb=0; } ~canbo() { this->macanbo; this->tencanbo; this->luongcb; } void nhap1() { date::nhap(); cout<<"\n nhap ma can bo: ";fflush(stdin); getline(cin,this->macanbo); cout<<"\n nhap ho ten can bo: ";fflush(stdin); getline(cin,this->tencanbo); cout<<"\n nhap luong co ban:";cin>>this->luongcb; } void xuat1() Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 { date::xuat(); cout<<"\n ma can bo: "<<macanbo<<"\n he so luong: "<<tencanbo<<"\nluong co ban:"<<luongcb; } float luong() { return (luongcb+tienpcchucvu); } string ten() { return tencanbo; } }; float canbo::tienpcchucvu=200; int main() { date ngay; cout<<"\n nhap thong tin 1 ngay:"; ngay.nhap(); cout<<"\nXuat thong tin ngay vua nhap:"; ngay.xuat(); canbo *cb; int n; cout<<"\nNhap so can bo:"; cin>>n; cb=new canbo[n]; Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 cout<<"\nNhap thong tin cua tung can bo:"; for(int i=0;i<n;i++) cb[i].ten(); Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 } Bài 5, Sinh viên hãy lập trình hướng đối tượng bằng C++ thực hiện các việc sau: Xây dựng lớp đối tượng HANGHOA gồm: - Thành phần dữ liệu (Không cho phép truy cập từ ngoài class): mã hàng, tên hàng - Phương thức: o Hàm khởi tạo, hàm nhập, hàm xuất.

- Xây dựng lớp đối tượng MAYTINH kế thừa từ lớp HANGHOA có thêm o Thuộc tính: nhà sản xuất, năm sản xuất, giá bán niêm yết. o Thuộc tính tĩnh: tỷ lệ khuyến mại o Phương thức: hàm tạo đặt thông tin mặc định, hàm nhập, hàm xuất, hàm tính giá bán thực tế (=giá bán niêm yết - giá bán niêm yết* tỷ lệ khuyến mại ) Chương trình chính: 1) Nhập từ bàn phím thông tin của một hàng hóa 2) Hiển thị thông tin hàng hóa đó ra màn hình. 3) Nhập thông tin cho n đối tượng MAYTINH. 4) In ra màn hình thông tin của n đối tượng MAYTINH.

5) Hiển thị ra màn hình các máy tính của nhà sản xuất SAMSUNG. 6) In ra màn hình tên các máy tính có giá bán thực tế thấp nhất. Downloaded by Hoàng Anh (imbay2003@gmail.com) lOMoARcPSD|14822991 #include<iostream> using namespace std; #include<string> #include<math.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ