面向物件程式設計2018上機題(3)
阿新 • • 發佈:2018-12-19
/*設計一個類,用於對字串進行管理。要求: (1)在定義物件時,能夠確定字串的最大長度並清空字串。 (2)定義成員函式input, 用於從鍵盤為字串輸入資料。 (3)定義運算子過載函式,用於判斷兩個物件中的字串是否相同。 (4)定義成員函式exchange,用於互換字串中ASCII碼最大和最小的字元(需考慮字串中存在多個最大和最小字元的情況)。 (5)定義成員函式disp,用於顯示字串。 (6)定義main函式,合理地呼叫上述每個函式。*/ #include <iostream> #include <Windows.h> #include <string.h> using namespace std; class cString { private: char *p; int num;//記錄字串字數 public: cString(int n); ~cString(); void input(); bool operator==(const cString &c); void exchange(); void disp(); }; cString::cString(int n=0) { num = n > 0 ? n : 0; p = new char[num]; memset(p, 0, sizeof(num)); //strcpy(p, "");/*相當於p[0]=0;只完成了陣列首地址置0*/ } cString::~cString() { delete[]p; } void cString::input() { cout << "請輸入" << num << "字的字串(回車結束):" << endl; for (int i = 0; i < num; i++) { cin >> p[i]; } } bool cString::operator==(const cString &c) { int flag = 1; for (int i = 0; i < num; i++) { if (p[i] != c.p[i]) { flag = 0; cout << "兩字串不相等" << endl; return false; } } cout << "兩字串相等" << endl; return true; } void cString::exchange() { char max_c = p[0]; char min_c = p[0]; for (int i = 0; i < num; i++) { if (p[i] > max_c) { max_c = p[i]; } else if (p[i] < min_c) { min_c = p[i]; } } if (max_c == min_c) { cout << "該字串中所有字元相同,無最大或最小字元" << endl; } else { for (int i = 0; i < num; i++) { if (p[i] == max_c) { p[i] = min_c; } else if (p[i] == min_c) { p[i] = max_c; } } } } void cString::disp() { for (int i = 0; i < num && p[i] != '\0'; i++) { cout << p[i]; } cout << endl; } int main() { int n = 0; cout << "請輸入需要字串個數n:" ; cin >> n; cString c1(n); c1.input(); cout << "請輸入需要字元個數n:"; cin >> n; cString c2(n); c2.input(); cString c3 = c1; cout << "c1==c2 ?" << endl; c1 == c2; cout << "c1==c3 ?" << endl; c1 == c3; c1.exchange(); c1.disp(); system("pause"); return 0; }