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

pdf3 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 1553 | Lượt tải: 1download
Tóm tắt nội dung Cài đặt lớp CMyString - Lưu Văn Diệp, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfCài đặt lớp CMyString - Lưu Văn Diệp.pdf
  • rarCMyString.rar