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
Đăng nhận xét