#include #include #define MAX 300 using namespace std; class CharArray { char a[MAX]; int size; public: CharArray(void) { this->size = 0; } CharArray(const CharArray &ar) { this->size = ar.size; for (int i = 0; i < this->size; i++) this->a[i] = ar.a[i]; } CharArray(char b[], int bSize) { this->size = bSize; for (int i = 0; i < bSize; i++) this->a[i] = b[i]; } void add(char ch, int p) { if (this->size >= MAX) { return; } size++; for (int i = size - 1; i >= p; i--) this->a[i] = this->a[i - 1]; a[p] = ch; } void remove(int p) { if (this->size == 0) { return; } this->size--; for (; this->a[p]; p++) this->a[p] = this->a[p + 1]; } friend CharArray operator+(char ch, CharArray ar); friend ostream &operator<<(ostream &os, CharArray ar); CharArray operator*(int k) { CharArray temp; temp.size = this->size * k; int j = 0; for (int i = 0; i < temp.size; i++) { temp.a[i] = this->a[j]; j++; if (j == this->size) j = 0; } return temp; }; }; CharArray operator+(char ch, CharArray ar) { if (ar.size == 200) return ar; ar.size++; for (int i = ar.size - 1; i > 0; i--) { ar.a[i] = ar.a[i - 1]; } ar.a[0] = ch; return ar; } ostream &operator<<(ostream &os, CharArray ar) { if(ar.size == 0) return os; for (int i = 0; i < ar.size; i++) os << ar.a[i] << " "; os << endl; return os; } void testBai2() { char a[] = {'X', 'Y', 'Z'}; CharArray ar(a, 3); CharArray ar2(ar); cout << "Kiem tra cac ham thanh vien:" << endl; cout << ar << ar2; ar.add('a', 0); ar.add('b', 4); ar.add('c', 1); cout << ar; for (int i = 0; i < 10; i++) { ar.remove(i); cout << ar; } cout << "Kiem tra cac phep toan:" << endl; ar = 'a' + ('b' + ('c' + ar)); cout << ar; for (int i = 1; i < 4; i++) cout << ar * i; } int main(int argc, char const *argv[]) { testBai2(); }