Thực hành ngôn ngữ lập trình C++ - Bài thực hành số 10

Lớp vector này có các phương thức sau:

1) xây dựng các phương thức constructor, destructor

2) void push_back(int): chèn thêm một phần tửvào cuối

3) void pop_back(int): lấy phần tửcuối ra

4) int getAt(int index):lấy một phần tửthứ index

5) void setAt(int index, int value):gán giá trị valuecho phần tửthứ index

6) int size():trảvềsốphần tử(sốchiều) của vector

7) void clear():xóa tất cảcác phần tửcủa vector

8) void print():in các phần tửnày ra màn hình

pdf3 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1842 | Lượt tải: 1download
Tóm tắt nội dung Thực hành ngôn ngữ lập trình C++ - Bài thực hành số 10, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 
Lê Anh Cường, Hoàng Thị Điệp - Bộ môn Khoa học Máy tính 
Bài thực hành số 10 
A- BÀI TẬP LẬP TRÌNH 
Bài 1: 
Xây dựng lớp vector cho dữ liệu kiểu int 
class MyVector { 
 // khai báo dữ liệu 
 // constructor 
 // destructor 
 // các phương thức (hàm) 
}; 
Lớp vector này có các phương thức sau: 
1) xây dựng các phương thức constructor, destructor 
2) void push_back(int): chèn thêm một phần tử vào cuối 
3) void pop_back(int) : lấy phần tử cuối ra 
4) int getAt(int index): lấy một phần tử thứ index 
5) void setAt(int index, int value): gán giá trị value cho phần tử thứ index 
6) int size(): trả về số phần tử (số chiều) của vector 
7) void clear(): xóa tất cả các phần tử của vector 
8) void print(): in các phần tử này ra màn hình 
Chú ý: thiết kế phần nào là private, phần nào là public 
Viết chương trình minh họa việc sử dụng lớp vector này: 
- Nhập vào một dãy các số nguyên (nhập vào đối tượng này). Không cố định trước số phần 
tử muốn nhập. 
- Thử nghiệm các phương thức trên 
Gợi ý đoạn mã nhập dãy số nguyên đến khi dừng lại: 
MyVector mv; 
while(1) { 
 int x ; 
 cout << “x = ” ; 
 cin >> x ; cin.ignore(1) ; 
 mv.push_back(x) ; 
 cout << “nhap tiep ko (c/k)” ; 
 char c ; 
 cin.get(c); 
 if( c==’k’ ) break ; 
} 
TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 
Lê Anh Cường, Hoàng Thị Điệp - Bộ môn Khoa học Máy tính 
Bài 2: 
Xây dựng chương trình quản lý nhân viên. Thiết kế theo tư tưởng hướng đối tượng như sau: 
- Xây dựng lớp Personnel 
- Xây dựng lớp quản lý nhân viên (ký hiệu là PersonnelManager) 
1) Lớp Personnel bao gồm dữ liệu (private) và chức năng (public) như sau: 
a) Dữ liệu: tên, năm sinh 
b) Chức năng (phương thức): 
 + set tên 
 + set năm sinh 
 + get tên 
 + get năm sinh 
+ hiển thị thông tin nhân viên ra string. Ví dụ khai báo phương thức này: 
string showInfo(); 
2) Lớp PersonnelManager bao gồm dữ liệu (private) và chức năng (public) như sau: 
a) Dữ liệu: danh sách nhân viên (có thể có nhiều cách cài đặt ở đây: dùng mảng tĩnh, dùng 
mảng cấp phát động) 
b) Chức năng (phương thức): 
 + hiển thị ra màn hình tất cả nhân viên 
 + hiển thị ra màn hình các nhân viên theo thứ tự tuổi tăng dần 
 + ghi ra một file text các nhân viên theo thứ tự tuổi tăng dần 
 + hiển thị ra màn hình các nhân viên có tuổi >= 50 (đọc năm hiện tại từ bàn phím) 
 + ghi ra file text các nhân viên có tuổi >= 50 (đọc năm hiện tại từ bàn phím) 
 + lấy dữ liệu từ file text vào chương trình. File text chứa dữ liệu có dạng: 
 Le Van A 
 1975 
 Le Van B 
1977 
… 
Chú ý: ngoài những phương thức public như chỉ ra ở trên, phải xây dựng thêm các phương thức 
private để xử lý nội bộ, chẳng hạn như phương thức sắp xếp, … 
TH Ngôn ngữ lập trình C++ Học kì I, năm học 2007-2008 
Lê Anh Cường, Hoàng Thị Điệp - Bộ môn Khoa học Máy tính 
B- PHỤ LỤC 
Hướng dẫn bài 1: cách cài đặt dữ liệu 
Dùng mảng cấp phát động trỏ bởi con trỏ data. Khi thêm dữ liệu mà không đủ bộ nhớ thì cấp phát 
lại. Dưới đây là đoạn mã gợi ý: 
//---------------------------------------------------------------------------- 
// Khai bao lop MyVector dung de luu mot day so nguyen 
//---------------------------------------------------------------------------- 
class MyVector 
{ 
public: 
 // ham tao & ham huy ... 
 // cac phuong thuc public... 
private: 
 // ham cap phat lai bo nho cho data (tang kich thuoc len delta) 
 bool reallocate(unsigned int delta); 
 int * data; // con tro chi toi mang int cap phat dong 
 unsigned int maxSize; // so chieu toi da cua vector 
 unsigned int currentsize; // so chieu hien tai cua vector 
}; 
//---------------------------------------------------------------------------- 
// ham cap phat lai bo nho cho data (tang kich thuoc len delta) 
// goi toi khi currentsize == maxSize 
//---------------------------------------------------------------------------- 
bool MyVector::reallocate(unsigned int delta) 
{ 
 int * holder = data; 
 unsigned int oldMaxSize = maxSize; 
 // cap phat lai cho data 
 maxSize += delta; 
 data = new int[maxSize]; 
 if(data == NULL) return false; // neu cap phat khong thanh cong 
 // sao du lieu tu holder sang data 
 for(int i = 0; i < oldMaxSize; i++) 
 data[i] = holder[i]; 
 // xoa vung nho cu 
 delete [] holder; 
 holder = NULL; 
 return true; 
} 

File đính kèm:

  • pdfThực hành ngôn ngữ lập trình C++ - Bài thực hành số 10.pdf