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

