Bài 10 – Sử dụng đối tượng
vector
Các cách khai báo vector
Các phương thức (hàm) của vector
Một số bài toán
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 1
1. Các cách khai báo vector
Cách 1:
vector <KiểuDL> TênMảng;
Cách 2:
vector <KiểuDL> TênMảng(Số phần tử);
Cách 3:
vector <KiểuDL> TênMảng(Số phần tử, Giá trị khởi
tạo);
Chú ý: Muốn sử dụng các khai báo này thì phải viết
dòng sau đây ở đầu chương trình:
#include <vector>
Bộ
môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 2
Ví dụ:
vector < int > A; //Khai báo vector A (Rỗng)
vector < float > B(100); //Mảng này có 100 phần
//tử, mỗi phần tử là một số thực
vector < int > C(50, 0); //Mảng này có 50 phần
tử ,
//các phần tử đều có giá trị bằng
0
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 3
2. Các phương thức (hàm) của
vector
Phương thức
A.back()
A.front()
A.clear()
A.pop_back()
A.push_back(e)
A.resize(newSize)
A.size()
...
Ý nghĩa
Phần tử cuối cùng của vector
Phần tử đầu tiên của vector
Làm rỗng vector
Xóa phần tử cuối cùng của vector
Ghép thêm phần tử e vào cuối vector
Đổi cỡ của vector thành newSize
Số phần tử của vector A
...
(Trang 278)
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 4
3. Một số bài toán
Ví dụ:
1. Nhập một dãy có N phần tử (các phần tử là
số thực). Hiện dãy ra màn hình.
2. Giảm số lượng phần tử của dãy đi một nửa.
Hiện dãy mới ra màn hình.
3. Xoá toàn bộ dãy.
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 5
Gợi ý:
int N ;
cout << "Nhap N = "; cin >> N ;
vector < float > A(N);
for (int i = 0; i < A.size(); i ++)
{
cout << "Nhap A[" << i << "] = " ;
cin >> A[i] ;
}
//Hien day:
cout << "Day vua nhap la: ";
for (int i = 0; i < A.size(); i ++) cout << A[i] << " " ;
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 6
Giảm số lượng phần tử của dãy đi một nửa:
A.resize(N/2);
Xoá toàn bộ dãy:
A.clear();
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 7
Bài tập 1:
1. Nhập một dãy có N phần tử (các phần tử là
số nguyên). Hiện dãy ra màn hình.
2. Tăng gấp đôi số lượng phần tử của dãy.
Nhập thêm các phần tử mới. Hiện dãy mới ra
màn hình.
3. Đổi chỗ phần tử đầu tiên và phần tử cuối
cùng của dãy mới.
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 8
Bài tập 2: (CheckSum)
1. Nhập một dãy có N phần tử (các phần tử là
số nguyên). Hiện dãy ra màn hình.
2. Tính tổng các phần tử của dãy. Ghép giá trị
tính được vào cuối dãy.
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 9
Bài tập 3:
Viết hàm có tham số là dãy số thực A. Giá
trị trả về của hàm là trung bình cộng các
phần tử của dãy A.
Áp dụng hàm vừa viết để giải bài toán:
Nhập một dãy có N số thực từ bàn phím,
tính trung bình cộng các phần tử của dãy.
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 10
Hướng dẫn:
float TBC(vector < float > A)
{float S = 0;
for (int i = 0; i < A.size(); i ++) S = S + A[i];
return S/A.size();
}
...
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 11
EOL
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 12
Bài 11 – Sử dụng đối tượng
string
Các cách khai báo chuỗi kí tự
Nhập chuỗi kí tự từ bàn phím
Các phương thức (hàm) của string
Một số bài toán
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 13
1. Các cách khai báo chuỗi kí tự
Cách 1:
char TênChuỗi[Số phần tử];
Cách 2:
string TênChuỗi;
Chú ý: Muốn sử dụng cách khai báo thứ 2 thì
phải viết dòng sau đây ở đầu chương trình:
#include <string>
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 14
Ví dụ:
char S1[50]; //Khai báo dãy có 50 phần tử,
//mỗi phần tử là một kí tự
string S2; // Khai báo dãy kí tự S2 (Rỗng)
string S3 = "HELLO"; // Khai báo dãy kí tự S3
//với giá trị khởi tạo
S3[0] = 'H';
S3[1] = 'E';
...
S3[4] = 'O';
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 15
2. Nhập chuỗi kí tự từ bàn phím
Cách 1:
Sử dụng lệnh cin như bình thường (không
nhập được các kí tự trắng):
string S;
cout << "Nhap chuoi ki tu: ";
cin >> S;
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 16
Cách 2:
Sử dụng hàm getline (nhập được các kí tự
trắng):
string S;
cout << "Nhap chuoi ki tu: ";
getline(cin, S);
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 17
Chương trình ví dụ:
#include <iostream>
#include <string>
using namespace std;
main()
{string S1, S2;
cout << "Nhap chuoi ki tu 1: ";
getline(cin, S1);
cout << "Nhap chuoi ki tu 2: ";
cin >> S2;
cout << " Chuoi ki tu 1 : " << S1 << endl;
cout << " Chuoi ki tu 2 : " << S2 << endl;
B cout << " Ghép hai chuoi : " << S1+S2;
ộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 18
}
3. Các phương thức (hàm) của
string
Phương thức
S.erase(i, N)
S.push_back(C)
S.resize(Len)
S.size()
S.insert(i, S2)
S.clear()
...
Ý nghĩa
Xoá N kí tự của chuỗi S từ vị trí thứ
i
Ghép thêm kí tự C vào cuối chuỗi S
Đổi độ dài của chuỗi S thành Len
Số kí tự trong chuỗi S
Chèn chuỗi S2 vào vị trí thứ i của S
Làm rỗng chuỗi S
...
(Trang 240 và 264)
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 19
4. Một số bài toán
Ví dụ:
Nhập một xâu kí tự từ bàn phím. Hãy xoá
phần tử đầu tiên của xâu.
Hiện xâu mới ra màn hình
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 20
Chương trình:
#include <iostream>
#include <string>
using namespace std;
int main()
{string S;
cout << "Nhap chuoi ki tu : ";
getline(cin, S);
S.erase(0, 1); //Xoa phan tu thu 0
cout << " Chuoi sau khi xoa : " << S;
return 0;
B }
ộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 21
Bài tập 1:
Nhập một chuỗi kí tự từ bàn phím. Hãy
chuyển phần tử đầu tiên của chuỗi xuống
vị trí cuối cùng.
Hiện chuỗi mới ra màn hình
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 22
Gợi ý:
1. Ghép phần tử S[0] vào cuối chuỗi:
S.push_back(S[0]);
2. Xóa phần tử S[0]
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 23
Bài tập 2:
Nhập một chuỗi kí tự từ bàn phím. Hãy
đếm số lượng các kí tự trắng trong chuỗi
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 24
Bài tập 3:
Nhập một chuỗi kí tự từ bàn phím. Hãy
đếm số lượng chữ cái in hoa trong chuỗi
Bộ môn Kỹ thuật máy tính – Khoa
CNTT
Tin học đại cương 2 25