Code thực hành ngày 15-08
Bài 2: Cài đặt một lớp template cho stack sử dụng mảng động..
Bài 3:
Trong C++, phép toán new được dùng để cấp phát bộ nhớ. Khi không cấp phát được bộ nhớ cho con trỏ thì con trỏ sẽ có giá trị NULL. Hãy cài đặt lại các lớp exception với tên gọi là ErrorMemory để kiểm tra việc cấp phát này.
Bài 2: Cài đặt một lớp template cho stack sử dụng mảng động..
Code:
// OOP2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "iostream" #include "conio.h" using namespace std; template <class T> class Stack { private: int Num; T* A; public: Stack() { A = new T[10]; Num=0; } void Push(T x) { A[Num]=x; Num++; cout<<"da push: "<<x<<endl; } T Pop() { Num--; return A[Num]; } }; main() { Stack<int> ss; for(int i=1;i<=11;i++) { ss.Push(i); } for(int i=1;i<=11;i++) { cout<<ss.Pop()<<endl; } getch(); return 0; }
Trong C++, phép toán new được dùng để cấp phát bộ nhớ. Khi không cấp phát được bộ nhớ cho con trỏ thì con trỏ sẽ có giá trị NULL. Hãy cài đặt lại các lớp exception với tên gọi là ErrorMemory để kiểm tra việc cấp phát này.
Code:
#include "stdafx.h" #include "iostream" #include "conio.h" using namespace std; template <class T> class Stack { private: int Num; T* A; public: Stack() { A = new T[10]; if(A==NULL) throw ErrorStack(); Num=0; } void Push(T x) { if(Num==10) throw ErrorStack(); A[Num]=x; Num++; cout<<"da push: "<<x<<endl; } T Pop() { if(Num==0) throw ErrorStack(); Num--; return A[Num]; } }; class ErrorStack { public: ErrorStack() { } void ErrFull() { printf("\nKhong cap phat duoc."); } void ErrPop() { printf("\nKhong co du lieu de Pop."); } void ErrPush() { printf("\nKhong Push them vao duoc.\n\n"); } }; int main() { try { Stack<int> ss; try { for(int i=1;i<=11;i++) { ss.Push(i); } } catch(ErrorStack& e) { e.ErrPush(); } try { for(int i=1;i<=11;i++) { cout<<ss.Pop()<<endl; } } catch(ErrorStack& e) { e.ErrPop(); } } catch(ErrorStack& e) { e.ErrFull(); } getch(); return 0; }
Comment