BÀI TẬP XÂU (string)

 

KIỂU XÂU

A. LÝ THUYẾT

1. Khái niệm:

Xâu là một dãy các kí tự, mỗi kí tự là một phần tử của xâu.

Mỗi phần tử trong xâu được đánh số thứ tự, bắt đầu từ 0.

Độ dài của xâu là số lượng kí tự có trong xâu.

Xâu có độ dài bằng 0 được gọi là xâu rỗng, kí hiệu: "".

Kiểu string.

Số lượng kí tự mà 1 biến kiểu string chứa được là rất lớn.

a. Khai báo biến

string <tên biến xâu>;

b. Truy xuất phần tử xâu

VD: Xâu s=”thpt”

Truy xuất phần tử thứ 3 của xâu s: s[2]="p"

c. Nhập vào xâu

- Sử dụng lệnh cin: thì sẽ nhập được xâu liên tiếp nhau không chứa dấu cách trống.

- Để nhập được các xâu kí tự chứa dấu cách trống ta sử dụng lệnh sau: getline(cin,s);

d. Xuất xâu

Sử dụng lệnh cout, ví dụ: cout<<s;

e. Duyệt từng kí tự trong xâu:

Sử dụng lệnh lặp duyệt từ vị trí đầu (vị trí 0) đến vị trí cuối (vị trí s.length()-1).

2. Các phương thức thao tác với xâu:

a. s.length()

Ý nghĩa: lấy độ dài của xâu s

b. s.substr(int pos, int n)

Ý nghĩa: lấy chuỗi con (lấy trong xâu s, bắt đầu từ vị trí pos, lấy n kí tự)

Vd: s=”abcdegh”  à cde

s.substr(2,3)

c. s.insert(int pos, string st)

Ý nghĩa:  chèn xâu st vào vị trí pos của xâu s

Vd: s=”abcd”       s.insert(1,”ac”)  ->>  abaccd

d. s.erase(int pos, int n)

Ý nghĩa: xóa trong xâu s, kể từ vị trí pos, xóa n kí tự.

e.          reverse(s.begin(), s.end() )

Ý nghĩa: đảo ngược xâu s.

f. s.find(string st, int pos)

Ý nghĩa: tìm chuỗi st trong s kể từ vị trí pos đến cuối chuỗi. Nếu không có pos thì tìm

kiếm từ đầu đến cuối chuỗi. Trả về vị trí của st trong s nếu có. Nếu không có trả giá trị

-1 (với điều kiện ép kiểu int trước phương thức, nếu không ép kiểu sẽ ra một con số

khác thường là 4294967295).

g. s.replace(int pos, int nchar, string st)

Ý nghĩa: thay thế 1 đoạn con trong xâu s cho trước (đoạn con kể từ vị trí pos và đếm tới

nchar kí tự về cuối chuỗi) bởi 1 xâu st.

h. Chuyển đổi :

1. Từ xâu s sang số:   int n=atoi(s.c_str());

2. Từ số n sang xâu: ostringstream tg; tg<<n; string s=tg.str();

3. Chuyển đổi kí tự thường sang hoa: toupper(<kí tự>)

Vd: toupper(a)=A.

B. BÀI TẬP  

1. Viết chương trình nhập vào một xâu, kiểm tra xâu đối xứng hay ko?

2. Nhập vào một chuỗi, in ra chuỗi ngược.

3. Nhập vào một xâu, in ra xâu in hoa.

4. Nhập vào một xâu họ tên, chuyển đổi các kí tự đầu tiên thành in hoa.

Ví dụ:s=”tran van nam” thì kết quả là “Tran Van Nam”.

5. Nhập vào danh sách học sinh của một lớp. Sắp xếp danh sách theo chiều tăng dần của độ dài họ tên

 

 

LÝ THUYẾT

CẤU TRÚC DỮ LIỆU MẢNG LÀ GÌ?

Mảng (Array): là một trong các cấu trúc dữ liệu cũ và quan trọng nhất. Mảng có thể

lưu giữ một số phần tử cố dịnh và các phần tử này nền cùng kiểu. Hầu hết các cấu trúc

dữ liệu đều sử dụng mảng để triển khai giải thuật. Dưới đây là các khái niệm quan

trọng liên quan tới Mảng.

- Phần tử: Mỗi mục được lưu giữ trong một mảng được gọi là một phần tử.

- Chỉ mục(Index): Mỗi vị trí cảu một phần tử trong một mảng có một chỉ mục số

được sử dụng để nhận diện phần tử.

Mảng gồm các bản ghi có kiểu giống nhau, có kích thước cố định, mỗi phần tử được

xác định bởi chỉ số. Mảng là cấu trúc dữ liệu được cấp phát liên tục cơ bản.

Ưu điểm của mảng:

- Truy cập phần tử với thời  gian hằng số 0(1).

- Sử dụng bộ nhớ hiệu quả.

- Tính cục bộ về bộ nhớ.

Nhược điểm của mảng:

- Không thể thay đổi kích thước của mảng khi chương trình đang thực hiện.

Mảng động:

- Mảng động (dunamic array): cấp phát bộ nhớ cho mảng một cách động trong

quá trình chạy chương trình trong C là malloc và calloc, trong C++ là new.

- Sử dụng mảng động ta bắt đầu với mảng có 1 phần tử, khi số lượng phần tử

vượt qua khả năng của mảng thì ta gấp đôi kích thước mảng cũ và copy phần tử

mảng cũ vào nửa đầu của mảng mới.

Ưu điểm:

- Tránh lãng phí bộ nhớ khi phải khai báo mảng có kích thước lớn ngay từ đầu.

Nhược điểm:

- Phải thực hiện thêm thao tác copy phần tử mỗi khi thay đổi kích thước.

- Một số thời gian thực hiện thao tác không còn là hằng số nữa.

BIỂU DIỄN CẤU TRÚC DỮ LIỆU MẢNG?

Mảng có thể được khai báo theo nhiều cách đa đạng trong các ngôn ngữ lập trình. Để

minh họa, chúng ta sử dụng phép khai báo mảng trong ngôn ngữ C:

Int a[5] = {4, 6, 3, -9, 3}

*NOTE

 

Nhận xét