Cài đặt lớp CMyString - Lưu Văn Diệp
Cài đặt lớp CMyString với các yêu cầu sau:
- Chuỗi có độ dài bất kỳ
- Các hàm tạo
+Hàm tạo không đối số
+Hàm tạo với đối số là CMyString
+Hàm tạo với đối số là char*
+Hàm tạo với đối số là char, n: khởi tạo chuỗi gồm n k. tự liên tiếp giống nhau;n
mặc đị nh là 1.
- Hàm hủy
Họ và Tên : LƯU VĂN DIỆP MSSV : 08520059 Lớp : K3C4.2 Kính gửi : Thầy Hiển Dưới đây là bản báo cáo Đồ Án Số 1, kèm theo là chương trình Demo. Kính mong thầy xem qua và cho ý kiến về những ưu cũng như khuyết điểm của chương trình Demo này. Xin cám ơn thầy. BẢN BÁO CÁO ĐỒ ÁN SỐ 1 Đề bài Cài đặt lớp CMyString với các yêu cầu sau: - Chuỗi có độ dài bất kỳ - Các hàm tạo +Hàm tạo không đối số +Hàm tạo với đối số là CMyString +Hàm tạo với đối số là char* +Hàm tạo với đối số là char, n: khởi tạo chuỗi gồm n k. tự liên tiếp giống nhau;n mặc định là 1. - Hàm hủy Với đề bài này, ta xây dựng lớp CMyString có 1 biến thành viên private là con trỏ S kiểu char char * S; Trong các hàm tạo, ta khởi tạo S như sau: S = new char[n]; với n là số kí tự của chuỗi S , sử dụng hàm strdup để sao chép chuỗi. Ví dụ: CMyString::CMyString(const char* c) { s = new char[strlen(c)+1]; s = strdup(c); } Trong ví dụ này, tham biến c là kiểu const char* , có thể là 1 chuỗi “dh cntt” hay là 1 biến kiểu char*. CMyString a(“dh cntt”); char * ch = new char [8]; ch = “dh cntt”; CMyString b(ch); Sử dụng hàm tạo sao chép nhằm tránh các lỗi về cấp phát bộ nhớ của con trỏ. CMyString::CMyString(const CMyString& c) { s = new char[strlen(c.s) + 1]; s = strdup(c.s); } Hàm hủy, sử dụng toán tử delete CMyString::~CMyString() { delete [] s; } Các hàm thành viên: Comparison: sử dụng hàm strcmp(s1,s2) trong thư viện “string.h” Conversion: Chuyển ký tự thường sang hoa: „a‟ – 32 = „A‟; Chuyển ký tự hoa sang thường: „A‟ + 32 = „a‟; TrimLeft: sử dụng biến i = 0, tăng i lên 1 đến khi gặp kí tự khác “ “ (khoảng trắng) đầu tiên thì dừng lại TrimRight : tương tự TrimLeft, j = chiều dài chuỗi, giảm j. Extraction: Mid(int i , int j): trả về chuỗi ch gồm các ký tự từ S [ i ] S [ j ] Left(int i): sử dụng hàm Mid( 0 , i ); Right(int i): Mid( this->GetLength() – i + 1 , this->GetLength() ); Searching: Find(const CMyString& c): i = 0; j = 0; Cho i = 0 this->GetLength() Nếu S [ i ] == c.s[ 0 ] { j == 0; Tăng j lên 1 đến khi (j == c.GetLength()) hoặc (this->S[ i ] != c.S[j]) Nếu j == c.GetLength() return i; // i là vị trí tìm thấy đầu tiên } ReverseFind(const CMyString& c): Dùng hàm Reverse() đảo ngược chuỗi. friend char* Reverse(const char* c) { char* ch = new char[(int)strlen(c)+1]; int len = (int)strlen(c); ch = strdup((char*)c); for (int i=0; i< len/2; i++) swap(ch[i],ch[len - i - 1]); //swap() đổi chỗ return ch; } Sau đó sử dụng Find()
File đính kèm:
- Cài đặt lớp CMyString - Lưu Văn Diệp.pdf
- CMyString.rar