1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập về xây dựng template c

3 115 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

Mơn Kỹ thuật lập trình Bài thực hành số 10 : Xây dựng "class template" theo yêu cầu Mục tiêu : ƒ Giúp SV làm quen với việc ₫ặc tả "class template" theo yêu cầu riêng ƒ Giúp SV làm quen với việc thực "function template" "class template" ƒ Giúp SV làm quen với việc sử dụng "class template" ₫ã có Nội dung : ƒ Tạo ₫ặc tả "class template" miêu tả stack nhiều phần tử thuộc kiểu ₫ó (số lượng không hạn chế), người dùng thấy tác vụ : push(newVal) pop (retVal) Hiện thực "class template" vừa ₫ặc tả Viết ứng dụng nhỏ ₫ể kiểm tra hoạt ₫ộng "class template" stack vừa xây dựng ƒ Dịch chạy chương trình ƒ Debug chương trình ₫ể tìm lỗi có Qui trình : ƒ Chạy VC++, tạo Project quản lý ứng dụng gồm file : o AnyStack.h : ₫ặc tả "class template" Stack thực hàm "class template" Stack Lưu ý phần ₫ặc tả "class template" thường gồm ₫ặc tả "function template" "class template", "function template" chưa tạo mã máy cụ thể mà làm phương tiện ₫ể "instanciate" class cụ thể, ₫ó ta ₫ể "function template" chung file *.h (không cần không nên dùng file AnyStack.cpp ₫ể chứa riêng "function template") o Undung.cpp : file ứng dụng thử dùng "class template" AnyStack ₫ể kiểm tra ƒ Code cụ thể file sau, lưu ý chi tiết in ₫ậm, ₫ó chi tiết khác với class bình thường : //file IntStack.h //dinh nghia kieu BOOL typedef int BOOL; //đặc tả class template template class AnyStack { public: AnyStack(); //constructor ~AnyStack(); //destructor BOOL push(T newVal); // de gia tri vao dinh BOOL pop(T& retVal); // lay gia tri tu dinh protected: // khơng có private : T *data; //danh sách đặc phần tử stack int top; // số phần tử đỉnh stack int max; // số lượng max hành stack }; // khai báo cần dùng cho class const GROWBY = 4; const TRUE = 1; const FALSE = 0; //function template cho hàm constrcutor template AnyStack::AnyStack() { top = 0; max =GROWBY; data = (T*) new int[GROWBY]; } //function template cho hàm constrcutor template AnyStack::~AnyStack() { delete data; } //function template cho hàm push template BOOL AnyStack::push(T newVal) { if (top==max) { //hết stack //phân phối lại vùng nhớ lớn GROWBY phần tử T* newdata = (T*)new T[GROWBY+max]; if (newdata == 0) { printf("He thong het cho roi!!!\n"); return FALSE; } //di chuyển stack cũ stack for (int i = 0; ipop(j)) printf ("Tri vua pop la : %d\n",j); s = new AnyStack; //tạo đối tượng stack số thực //push số thực for (int i=1; ipush(i*3.1416)==0) { printf("Khong push duoc nua!!!\n"); exit(0); } } //pop hiển thị hết stack float kq; while (s->pop(kq)) printf ("Tri vua pop la : %f\n",kq); } ƒ ƒ ƒ Dịch chạy ứng dụng quan sát kết hiển thị Thử thay ₫ổi số lượng giá trị cụ thể số nguyên số thực ₫ược push vào stack quan sát kết Thay ₫ổi ₫oạn code ₫ể người sử dụng push vào tùy ý số phần tử ...//function template cho hàm constrcutor template AnyStack::AnyStack() { top = 0; max =GROWBY; data = (T*) new int[GROWBY]; } //function template cho hàm constrcutor template

Ngày đăng: 07/02/2019, 17:42

TỪ KHÓA LIÊN QUAN

w