Tài liệu lời giải bài tập: Lập trình hướng đối tượng C++ - Lê Hải Trung

Tóm tắt Tài liệu lời giải bài tập: Lập trình hướng đối tượng C++ - Lê Hải Trung: ...() 24 { cout<<"("<<x<<","<<y<<")"; cout<<endl; } void cong_tru_nhan(vector a, vector b) { vector c,d,e; c.x=a.x+b.x; c.y=a.y+b.y; cout<<"\nTong hai vector: "; c.xuat(); d.x=a.x-b.x; d.y=a.y-b.y; cout<<"\nHie...lic của lớp cơ sở cũng là thành phần public của lớp dẫn xuất. - Kế thừa theo kiểu private thì tất cả các thành phần public của lớp cơ sở sẽ trở thành các thành phần private của lớp dẫn xuất.  Đa kế thừa - Định nghĩa lớp dẫn xuất từ nhiều lớp cơ sở Giả sử đã định nghĩa các lớp A, B. Cú p...endl; for (i=0; i<n; i++) { if (b[i].luong_gv()>5) { b[i].xuat(); cout<<endl; } } getch(); } 63 Câu 4.6: Lập chương trình thực hiện các việc sau: - Tạo một lớp nhân viên với các dữ liệu gồm: Tên nhân viên, Đơn vị, Hệ số lương, Lương tối thiểu với các ...

pdf100 trang | Chia sẻ: havih72 | Lượt xem: 169 | Lượt tải: 0download
Nội dung tài liệu Tài liệu lời giải bài tập: Lập trình hướng đối tượng C++ - Lê Hải Trung, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
p=0.25*luongcb_gv; 
 float luong_gv; 
 luong_gv=(luongcb_gv*hsl)+pc_anca+pc_dochai+pc_lop; 
 return luong_gv; 
 } 
 }; 
 61 
void main() 
{ 
 canbo a[50]; 
 giangvien b[50]; 
 int m,n,i; 
 cout>m; 
 cout>n; 
 cout>luongcb_cb; 
 cout>luongcb_gv; 
 cout<<"\n---------------------\n"; 
 for (i=0; i<m; i++) 
 { 
 cout<<"Nhap thong tin can bo thu "<<i+1<<" \n"; 
 a[i].nhap(); 
 cout<<endl; 
 } 
 for (i=0; i<n; i++) 
 { 
 cout<<"Nhap thong tin giang vien thu "<<i+1<<" \n"; 
 b[i].nhap(); 
 cout<<endl; 
 } 
 cout<<"\nThong tin can bo va giang vien: "; 
 for (i=0; i<m; i++) 
 { 
 a[i].xuat(); 
 cout<<"\nLuong can bo "<<i+1<<" (trieu dong): "<<a[i].luong_cb(); 
 cout<<endl; 
 62 
 } 
 for (i=0; i<n; i++) 
 { 
 b[i].xuat(); 
cout<<"\nLuong GV "<<i+1<<" (trieu dong): "<<b[i].luong_gv(); 
 cout<<endl; 
 } 
 cout<<"\n\nDanh sach CB va GV phai dong thue thu nhap \n "; 
 for (i=0; i<m; i++) 
 { 
 if (a[i].luong_cb()>5) 
 { 
 a[i].xuat(); 
 cout<<endl; 
 } 
 } 
 cout<<endl; 
 for (i=0; i<n; i++) 
 { 
 if (b[i].luong_gv()>5) 
 { 
 b[i].xuat(); 
 cout<<endl; 
 } 
 } 
getch(); 
} 
 63 
Câu 4.6: Lập chương trình thực hiện các việc sau: 
- Tạo một lớp nhân viên với các dữ liệu gồm: Tên nhân viên, Đơn vị, Hệ số lương, 
Lương tối thiểu với các phương thức sau: 
o Nhập dữ liệu 
o Tính lương theo công thức: Lương chính = Lương tối thiểu * Hệ số lương. 
- Hiện tại có nhu cầu tính lương mới theo cách sau: 
o Kỹ sư: Lương mới = Lương chính + Số năm trong nghề * Phụ cấp chuyên môn 
o Các nhân viên khác vẫn tính lương theo cách tính như trước 
Hãy thiết kế chương trình thực hiện việc tính lương mới cho các nhân viên bằng 
phương pháp kế thừa chương trình đã có trước 
#include 
#include 
#include 
class nhanvien 
{ 
 public: 
 char tennv[25]; 
 char donvi[20]; 
 float hsl; 
 float luongtt; 
 public: 
 void nhap() 
 { 
 cout<<"Nhap ten: "; fflush(stdin); gets(tennv); 
 cout<<"Nhap don vi: "; fflush(stdin); gets(donvi); 
 cout>hsl; 
 64 
 cout>luongtt; 
 } 
 float luong() 
 { 
 float luong; 
 luong=luongtt*hsl; 
 return luong; 
 } 
 void xuat() 
 { 
 cout<<"Ten: "<<tennv; 
 cout<<"\nDon vi: "<<donvi; 
 cout<<"\nHe so luong: "<<hsl; 
 cout<<"\nLuong toi thieu: "<<luongtt; 
 cout<<"\nLuong chinh: "<<luong(); 
 } 
}; 
class kysu: public nhanvien 
{ 
 public: 
 int sonam; 
 float pc_chuyenmon; 
 int choice; 
 public: 
 void nhap() 
 { 
 nhanvien::nhap(); 
 65 
 cout>choice; 
 if (choice==1) 
 { 
 cout>sonam; 
 cout>pc_chuyenmon; 
 } 
 cout<<endl; 
 } 
 float luong_ks() 
 { 
 float luong_ks; 
 luong_ks=luong()+sonam*pc_chuyenmon; 
 return luong_ks; 
 } 
 void xuat() 
 { 
 nhanvien::xuat(); 
 if (choice==1) 
 { 
 cout<<"\nSo nam trong nghe: "<<sonam; 
 cout<<"\nPhu cap chuyen mon: "<<pc_chuyenmon; 
 cout<<"\nLuong ky su: "<<luong_ks(); 
 } 
 cout<<endl; 
 } 
}; 
 66 
void main() 
{ 
 kysu a[50]; 
 int n,i; 
 cout>n; 
 for (i=0; i<n; i++) 
 { 
 a[i].nhap(); 
 } 
 for (i=0; i<n; i++) 
 { 
 a[i].xuat(); 
 cout<<endl; 
 } 
 getch(); 
} 
Câu 4.7: Một nhà xuất bản nhận xuất bản sách. Sách có hai loại: loại có hình ảnh ở 
trang bìa và loại không có hình ảnh ở trang bìa. Loại có hình ảnh ở trang bìa thì phải thuê 
họa sĩ vẽ bìa. 
- Viết chương trình thực hiện các yêu cầu : 
o Tạo một lớp cơ sở có tên là SACH để lưu thông tin về tên sách, tác giả, số trang, 
giá bán và định nghĩa hàm thành phần cho phép nhập dữ liệu, in dữ liệu cho các 
đối tượng của lớp SACH. 
o Tạo lớp BIA kế thừa từ lớp SACH để lưu các thông tin: Mã hình ảnh, tiền vẽ và 
định nghĩa hàm thành phần cho phép nhập, in dữ liệu cho các đối tượng của lớp 
BIA. 
- Viết hàm main() thực hiện việc nhập xuất dữ liệu cho bài toán trên 
 67 
#include 
#include 
#include 
class SACH 
{ 
 public: 
 char tensach[25]; 
 char tacgia[20]; 
 int sotrang; 
 float giaban; 
 public: 
 void nhap() 
 { 
 cout<<"Nhap ten sach: "; fflush(stdin); gets(tensach); 
 cout<<"Nhap tac gia: "; fflush(stdin); gets(tacgia); 
 cout>sotrang; 
 cout>giaban; 
 } 
 void in() 
 { 
 cout<<"Ten sach: "<<tensach; 
 cout<<"\nTac gia: "<<tacgia; 
 cout<<"\nSo trang: "<<sotrang; 
 cout<<"\nGia ban: "<<giaban; 
 } 
 }; 
 68 
class BIA: public SACH 
{ 
 public: 
 int mahinh; 
 float tienve; 
 int choice; 
 public: 
 void nhap() 
 { 
 SACH::nhap(); 
 cout<<"Co phai la sach ve bia? (1:Co - 0:Khong) "; 
 cin>>choice; 
 if (choice==1) 
 { 
 cout>mahinh; 
 cout>tienve; 
 } 
 cout<<endl; 
 } 
 void in() 
 { 
 SACH::in(); 
 if (choice==1) 
 { 
 cout<<"\nMa anh bia: "<<mahinh; 
 cout<<"\nTien ve: "<<tienve; 
 } 
 cout<<endl; 
 69 
 } 
 }; 
void main() 
{ 
 BIA a[50]; 
 int n,i; 
 cout>n; 
 for (i=0; i<n; i++) 
 { 
 cout<<"Nhap thong tin sach thu "<<i+1<<" \n"; 
 a[i].nhap(); 
 } 
 for (i=0; i<n; i++) 
 { 
 cout<<"\nThong tin sach thu "<<i+1<<" \n"; 
 a[i].in(); 
 } 
 getch(); 
} 
Câu 4.8: Một nhà xuất bản nhận xuất bản sách. Sách có hai loại: loại có hình ảnh ở 
trang bìa và loại không có hình ảnh ở trang bìa. Loại có hình ảnh ở trang bìa thì phải thuê 
họa sĩ vẽ bìa. 
- Viết chương trình thực hiện các yêu cầu : 
o Tạo một lớp cơ sở có tên là SACH để lưu thông tin về tên sách, tác giả, số trang, 
giá bán và định nghĩa hàm thành phần cho phép nhập dữ liệu, in dữ liệu cho các 
đối tượng của lớp SACH. 
 70 
o Tạo lớp BIA kế thừa từ lớp SACH để lưu các thông tin: Mã hình ảnh, tiền vẽ và 
định nghĩa hàm thành phần cho phép nhập, in dữ liệu cho các đối tượng của lớp 
BIA. 
o Tạo lớp HOASY để lưu các thông tin họ tên, địa chỉ của họa sỹ và định nghĩa hàm 
thành phần cho phép nhập, in dữ liệu cho các đối tượng của lớp HOASY. 
o Tạo lớp SACHVEBIA kế thừa từ lớp BIA và lớp HOASY và định nghĩa hàm 
thành phần cho phép nhập, in dữ liệu cho các đối tượng của lớp SACHVEBIA. 
- Viết hàm main() cho phép nhập vào hai danh sách: danh sách các sách có vẽ bìa và 
danh sách các sách không có vẽ bìa (có thể dùng mảng tĩnh hoặc mảng con trỏ) để thực 
hiện, xuất dữ liệu ra màn hình. 
#include 
#include 
#include 
class sach 
{ 
 public: 
 char tensach[30]; 
 char tentg[25]; 
 int sotrang; 
 float giaban; 
 public: 
 void nhap() 
 { 
 cout<<"Nhap ten sach: "; fflush(stdin); gets(tensach); 
 cout<<"Nhap ten tac gia: "; fflush(stdin); gets(tentg); 
 cout>sotrang; 
 cout>giaban; 
 } 
 71 
 void xuat() 
 { 
 cout<<"\nTen sach: "<<tensach; 
 cout<<"\nTen tac gia: "<<tentg; 
 cout<<"\nSo trang: "<<sotrang; 
 cout<<"\nGia ban: "<<giaban; 
 } 
 }; 
class bia: public sach 
{ 
 public: 
 int mahinh; 
 float tienve; 
 public: 
 void nhap() 
 { 
 sach::nhap(); 
 cout>mahinh; 
 cout>tienve; 
 } 
 void xuat() 
 { 
 sach::xuat(); 
 cout<<"\nMa hinh anh: "<<mahinh; 
 cout<<"\nTien ve hinh: "<<tienve; 
 cout<<endl; 
 } 
 72 
 }; 
class hoasi 
{ 
 public: 
 char hoten[25]; 
 char diachi[30]; 
 public: 
 void nhap() 
 { 
 cout<<"Nhap ho ten hoa si: "; fflush(stdin); gets(hoten); 
 cout<<"Nhap dia chi hoa si: "; fflush(stdin); gets(diachi); 
 } 
 void xuat() 
 { 
 cout<<"Ten hoa si: "<<hoten; 
 cout<<"\nDia chi hoa si: "<<diachi; 
 } 
 }; 
class sachvebia: public bia, public hoasi 
{ 
 public: 
 void nhap() 
 { 
 bia::nhap(); 
 hoasi::nhap(); 
 cout<<endl; 
 73 
 } 
 void xuat() 
 { 
 bia::xuat(); 
 hoasi::xuat(); 
 cout<<endl; 
 } 
 }; 
void main() 
{ 
 int i, m, n; 
 sachvebia a[50]; 
 sach b[50]; 
 cout>m; 
 cout>n; 
 cout<<"\n-----------------------\n"; 
 for (i=0; i<m; i++) 
 { 
 cout<<"Nhap thong tin SACH VE BIA thu "<<i+1<<" \n"; 
 a[i].nhap(); 
 } 
 for (i=0; i<n; i++) 
 { 
 cout<<"Nhap thong tin SACH KHONG VE BIA thu "<<i+1<<" \n"; 
 b[i].nhap(); 
 } 
 cout<<"\n-------------------\n"; 
 74 
 cout<<"-THONG TIN SACH VE BIA VA KHONG VE BIA "; 
 cout<<"\n-Thong tin SACH VE BIA: \n"; 
 for (i=0; i<m; i++) 
 { 
 a[i].xuat(); 
 cout<<endl; 
 } 
 cout<<"\n-Thong tin sach KHONG VE BIA: \n"; 
 for (i=0; i<n; i++) 
 { 
 b[i].xuat(); 
 cout<<endl; 
 } 
 getch(); 
} 
Câu 4.9: Lập chương trình thực hiện các việc sau: 
- Tạo một lớp nhân viên với các dữ liệu gồm: Tên nhân viên, Đơn vị, Hệ số lương, 
Lương tối thiểu với các phương thức sau: 
o Nhập dữ liệu 
o Tính lương theo công thức: Lương chính = Lương tối thiểu * Hệ số lương. 
- Hiện tại có nhu cầu tính lương mới theo cách sau: 
o Nhân viên: Lương mới = Lương chính + Số ngày làm trong tháng * Phụ cấp trách 
nhiệm 
o Các nhân viên khác vẫn tính lương theo cách tính như trước 
Hãy thiết kế chương trình thực hiện việc tính lương mới cho các nhân viên bằng 
phương pháp kế thừa chương trình đã có trước 
 75 
#include 
#include 
#include 
class nhanvien 
{ 
 public: 
 char tennv[25]; 
 char donvi[20]; 
 float hsl; 
 float luongtt; 
 public: 
 void nhap() 
 { 
 cout<<"Nhap ten: "; fflush(stdin); gets(tennv); 
 cout<<"Nhap don vi: "; fflush(stdin); gets(donvi); 
 cout>hsl; 
 cout>luongtt; 
 } 
 float luongchinh() 
 { 
 float lc; 
 lc=luongtt*hsl; 
 return lc; 
 } 
 void xuat() 
 { 
 cout<<"\nTen: "<<tennv; 
 76 
 cout<<"\nDon vi: "<<donvi; 
 cout<<"\nLuong chinh: "<<luongchinh(); 
 } 
 }; 
class nhanvienmoi: public nhanvien 
{ 
 public: 
 int songay; 
 float pc_trachnhiem; 
 int choice; 
 public: 
 void nhap() 
 { 
 nhanvien::nhap(); 
 cout<<"Tinh luong theo cach moi hay cu (1:Moi, 0:Cu) "; 
 cin>>choice; 
 if (choice==1) 
 { 
 cout>songay; 
 cout>pc_trachnhiem; 
 } 
 cout<<endl; 
 } 
 float luongmoi() 
 { 
 float luongmoi; 
 luongmoi=luongchinh()+pc_trachnhiem*songay; 
 return luongmoi; 
 77 
 } 
 void xuat() 
 { 
 nhanvien::xuat(); 
 if (choice==1) 
 { 
 cout<<"\nLuong moi: "<<luongmoi(); 
 } 
 cout<<endl; 
 } 
}; 
void main() { 
 nhanvienmoi a[50]; 
 int n,i; 
 cout>n; 
 for (i=0; i<n; i++) 
 { 
 cout<<"Nhap thong tin nhan vien thu "<<i+1<<" \n"; 
 a[i].nhap(); 
 } 
 for (i=0; i<n; i++) 
 { 
 cout<<"\nThong tin nhan vien thu "<<i+1<<" \n"; 
 a[i].xuat(); 
 } 
 getch(); 
} 
 78 
CHƯƠNG 5: KHUÔN HÌNH 
5.1 Tóm tắt lý thuyết 
 Khuôn hình hàm 
Cú pháp: 
template 
tên hàm(khai báo tham số) 
 { 
 // định nghĩa hàm 
} 
trong đó là các kiểu dữ liệu được khai báo với 
từ khoá class, cách nhau bởi dấu phẩy. Kiểu dữ liệu là một kiểu bất kỳ, kể cả kiểu 
class. 
 Khuôn hình lớp 
Cú pháp: 
template class SO 
{ 
 kieuso giatri; 
 public : 
 SO (kieuso x =0); 
 void Hienthi(); 
 ... 
}; 
Cũng giống như các khuôn hình hàm, template xác định rằng 
đó là một khuôn hình trong đó có một tham số kiểu kieuso. C++ sử dụng từ khoá class chỉ 
để nói rằng kieuso đại diện cho một kiểu dữ liệu nào đó. 
 79 
5.2 Các dạng bài tập 
Câu 5.1: Viết chương trình sử dụng khuôn hình hàm tìm giá trị nhỏ nhất của một mảng 
bất kỳ được nhập từ bàn phím 
Hướng dẫn: 
#include 
template 
T nn(T a[], int n) 
{ T min=a[1]; 
for(int i=1; i<=n;i++) 
if(a[i]<min) 
min=a[i]; 
return min; 
} 
main() { 
int c[100]; 
float b[100]; 
int m,k,i; 
cout>k; 
for( i=1; i<=k;i++) 
cin>>c[i]; 
cout<<"Gia tri nho nhat cua mang nguyen la: "<<nn(c,k); 
cout>m; 
for( i=1; i<=m;i++) 
cin>>b[i]; 
cout<<"Gia tri nho nhat cua mang thuc la: "<<nn(b,m); 
} 
 80 
5.3 Các vấn đề về thảo luận, thực hành, thí nghiệm 
Chương này cung cấp kiến thức chuyên sâu về lập trình hướng đối tượng là cách 
thức sử dụng khuôn hình để giải quyết các bài toán phức tạp. Kết thúc chương yêu cầu 
sinh viên sử dụng thành thạo cách sử dụng khuôn hình để giải các bài tập phức tạp, và 
luyện tập thông qua việc viết chương trình thực hiện các bài tập tổng hợp sau: 
5.4 Bài tập sinh viên tự làm 
Câu 5.2: Viết khuôn hình hàm tìm số lớn nhất của một mảng bất kỳ 
#include 
#include 
template 
void tim_max(x a[], int n) 
{ 
 x max; 
 max=a[0]; 
 for (int i=1; i<n; i++) 
 { 
 if (max<a[i]) 
 max=a[i]; 
 } 
 cout<<"Gia tri lon nhat trong mang: "<<max; 
 } 
void main() 
{ 
 float a[50], n; 
 cout>n; 
 81 
 for (int i=0; i<n; i++) 
 { 
 cout<<"Nhap a["<<i<<"]= "; 
 cin>>a[i]; 
 } 
 tim_max(a,n); 
 getch(); 
} 
Câu 5.3: Sử dụng hàm template để in các giá trị nhỏ nhất của một mảng có kiểu số 
nguyên. 
#include 
#include 
template 
void tim_min(x a[], int n) 
{ 
 x min; 
 min=a[0]; 
 for (int i=1; i<n; i++) 
 { 
 if (min>a[i]) 
 min=a[i]; 
 } 
 cout<<"Gia tri nho nhat trong mang: "<<min; 
 } 
 82 
void main() 
{ 
 int a[50], n; 
 cout>n; 
 for (int i=0; i<n; i++) 
 { 
 cout<<"Nhap a["<<i<<"]= "; 
 cin>>a[i]; 
 } 
 tim_min(a,n); 
 getch(); 
} 
Câu 5.4: Viết khuôn hình hàm để trả về giá trị trung bình của một mảng, các tham số 
hình thức của hàm này là tên mảng, kích thước mảng. 
#include 
#include 
template 
x tbc(x a[], int n) 
{ 
 float s=0; 
 float tbc; 
 for (int i=0; i<n; i++) 
 { 
 s=s+a[i]; 
 tbc=s/n; 
 } 
 83 
 return tbc; 
 } 
void main() 
{ 
 float a[100], n; 
 cout>n; 
 for (int i=0; i<n; i++) 
 { 
 cin>>a[i]; 
 } 
 cout<<"TBC cua mang la: "<<tbc(a,n); 
 getch(); 
} 
- Viết một khuôn hình hàm (function template) tên maximum( ) mà trả về trị lớn 
nhất của hai đối số được truyền đến hàm khi hàm được gọi. 
- Đưa khuôn hình hàm ở a. vào trong một chương trình C++ mà gọi hàm hai lần: 
một lần với 2 đối số kiểu số nguyên, một lần với 2 đối số thực chính xác đơn. 
#include 
#include 
template 
x maximum(x a, x b) 
{ 
 x max; 
 if (a>b) max=a; 
 else max=b; 
 84 
 return max; 
} 
void main() 
{ 
 int a,b; 
float c,d; 
 cout>a>>b; 
 cout<<"So lon hon: "<<maximum(a,b); 
 cout>c>>d; 
 cout<<"Son lon hon: "<<maximum(c,d); 
 getch(); 
} 
Câu 5.5: Viết khuôn hình hàm để sắp xếp kiểu dữ liệu bất kỳ theo chiều tăng dần. 
#include 
#include 
template 
void sx(x a[], int n) 
{ 
 x *p, *q; 
 for (int i=0; i<n-1; i++) 
 for (int j=i+1; j<n; j++) 
 { 
 p=&a[i]; 
 q=&a[j]; 
 85 
 if (*p>*q) 
 { 
 x tg=*p; 
 *p=*q; 
 *q=tg; 
 } 
 } 
 } 
void main() 
{ 
 int a[50], n; 
 cout>n; 
 for (int i=0; i<n; i++) 
 { 
 cin>>a[i]; 
 } 
 sx(a,n); 
 cout<<"Day sau khi sap xep: "; 
 for (int i=0; i<n; i++) 
 { 
 cout<<a[i]<<" "; 
 } 
 getch(); 
} 
 86 
Câu 5.6: Lập chương trình sử dụng khuôn hình hàm để tìm giá trị nhỏ nhất của dãy số 
bất kỳ. 
#include 
#include 
template 
void tim_min(x value, int n) 
{ 
 x min; 
 for (int i=1; i<=n; i++) 
 { 
 cout<<"Nhap gia tri thu "<<i<<": "; 
 cin>>value; 
 if (i==1) 
 { 
 min=value; 
 } 
 else 
 { 
 if (min>value) 
 min=value; 
 } 
 } 
 cout<<"\nMinimum value: "<<min; 
} 
 87 
void main() 
{ 
 int n; 
 cout>n; 
 int value; 
 tim_min(value,n); 
 float value2; 
 cout<<endl; 
 tim_min(value2,n); 
 getch(); 
} 
Câu 5.7: Lập chương trình sử dụng khuôn hình hàm để tìm giá trị lớn nhất của dãy bất 
kỳ. 
#include 
#include 
template 
void tim_max(x value, int n) 
{ 
 x max; 
 for (int i=1; i<=n; i++) 
 { 
 cout<<"Nhap gia tri thu "<<i<<": "; 
 cin>>value; 
 if (i==1) 
 { 
 max=value; 
 } 
 88 
 else 
 { 
 if (max<value) 
 max=value; 
 } 
 } 
 cout<<"\nMaximum value: "<<max<<endl; 
} 
void main() 
{ 
 int n; 
 cout>n; 
 int value; 
 tim_max(value,n); 
 float value2; 
 tim_max(value2,n); 
 getch(); 
} 
Câu 5.8: Lập chương trình sử dụng khuôn hình hàm để sắp xếp kiểu dữ liệu bất kỳ theo 
chiều giảm dần. 
#include 
#include 
template 
void sx(x a[], int n) 
{ 
 89 
 for (int i=0; i<n-1; i++) 
 for (int j=i+1; j<n; j++) 
 { 
 if (a[i]<a[j]) 
 { 
 x tg=a[i]; 
 a[i]=a[j]; 
 a[j]=tg; 
 } 
 } 
 } 
template 
void in(x a[], int n) 
{ 
 for (int i=0; i<n; i++) 
 cout<<a[i]<<" "; 
 } 
void main() 
{ 
 int n; 
 int a[50]; 
 cout>n; 
 for (int i=0; i<n; i++) 
 { 
 cout<<"Nhap a["<<i+1<<"]= "; 
 cin>>a[i]; 
 90 
 } 
 sx(a,n); 
 in(a,n); 
getch(); 
} 
Câu 5.9: Lập chương trình xây dựng khuôn hình cho hàm tìm giá trị nhỏ nhất của hai số. 
#include 
#include 
template 
void min(x1 a, x2 b) 
{ 
cout<<"So nho nhat la: "; 
cout<<(a<b?a:b); 
} 
void main() 
{ 
 int a, float b; 
 cout>a; 
 cout>b; 
 min(a,b); 
 getch(); 
} 
 91 
Câu 5.10: Lập chương trình sử dụng khuôn hình hàm để tìm số lớn nhất của hai số bất 
kỳ. 
#include 
#include 
void max(x1 a, x2 b) 
{ 
cout<<"So lon nhat la: "; 
coutb?a:b); 
} 
void main() 
{ 
 int a, float b; 
 cout>a; 
 cout>b; 
 max(a,b); 
 getch(); 
} 
Câu 5.11: Lập chương trình xây dựng khuôn hình lớp cho lớp điểm trong không gian 2 
chiều. Yêu cầu xây dựng constructor để tạo đối tượng và phương thức xuất điểm ra màn 
hình. 
#include 
#include 
template 
class diem 
{ 
 92 
 private: 
 x a,b; 
 public: 
 diem(x a1=0, x b1=0) 
 { 
 a=a1; b=b1; 
 } 
 void in() 
 { 
 cout<<"(x= "<<a<<",y= "<<b<<")"; 
 cout<<endl; 
 } 
 }; 
void main() 
{ 
 diem c(1.2,2.4); 
 c.in(); 
 diem d(3,5); 
 d.in(); 
 getch(); 
} 
 93 
Câu 5.12: Xây dựng khuôn hình lớp tam giác có thuộc tính là độ dài ba cạnh, các phương 
thức: Constructor tạo đối tượng, hàm xuất dữ liệu. 
#include 
#include 
template 
class tamgiac 
{ 
 private: 
 x a,b,c; 
 public: 
 tamgiac(x a1=0, x b1=0, x c1=0) 
 { 
 a=a1; b=b1; c=c1; 
 } 
 void xuat() 
 { 
 cout<<"Do dai cac canh: a= "<<a<<", b= "<<b<<", c= "<<c<<" "; 
 cout<<endl; 
 } 
}; 
void main() { 
 tamgiac c(3,4,5); 
 c.xuat(); 
 tamgiac d(3.2,4.5,5.1); 
 94 
 d.xuat(); 
 getch(); 
} 
Câu 5.13: Lập chương trình sử dụng khuôn hình hàm để nhập vào một dãy số, xuất dãy 
số và tính trung bình cộng các phần tử của dãy số đó. 
#include 
#include 
template 
void tbc(x value, int n) 
{ 
 float tbc; 
 float sum=0; 
 for (int i=1; i<=n; i++) 
 { 
 cout<<"Nhap gia tri thu "<<i<<": "; 
 cin>>value; 
 sum=sum+value; 
 } 
 cout<<"Trung binh cong: "<<sum/n; 
 } 
void main() 
{ 
 int value, n; 
 cout>n; 
 tbc(value,n); 
 getch(); 
} 
 95 
TÀI LIỆU THAM KHẢO 
Tài liệu tham khảo chính: 
[1] Lê Đình Hưng, Nguyễn Thanh Thuỷ, Lập trình hướng đối tượng 
với C++, NXB Khoa học và Kỹ thuật, 2005. 
[2] Nguyễn Thanh Thuỷ, Nguyễn Quang Huy, Bài tập lập trình hướng đối 
tượng với C++, NXB Khoa học và Kỹ thuật, 2004. 
Các tài liệu tham khảo khác: 
[1] James P. Cohoon and Jack W.Davidson, C++ Program Design An 
Introduction to Programming and Object-Oriented Design, 2nd edition, WCB 
McGraw-Hill, 1999. 
[2] Nell Dale, Chip Weems and Mark Headington, Programming and 
Problem Solving with C++, John & Barlett Publisher, 1996. 
 96 

File đính kèm:

  • pdftai_lieu_loi_giai_bai_tap_lap_trinh_huong_doi_tuong_c_le_hai.pdf