1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng môn học Tin đại cương: Bài 9&10 - Lý Anh Tuấn

26 36 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 411,19 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng bài 9 và 10 cung cấp những kiến thức về kiểu chung, lớp string, lớp vector. Những nội dung chính được trình bày trong chương này gồm có: Chương trình con chung, kiểu chung; lớp, lớp string; các toán tử với xâu kí tự; các hàm kí tự; lớp vector; khai báo vector;... mời các bạn cùng tham khảo.

Trang 1

Môn học Tin đại cương

Lý Anh Tuấn

Bộ môn Khoa học máy tính, Khoa Công nghệ

thông tin, Trường đại học Thủy Lợi

Trang 2

Buổi 9&10: Kiểu chung, lớp

Trang 3

Chương trình con chung, kiểu chung

 Để hoán đổi giá trị của 2 biến thực chúng ta viết thủ tục sau:

 Thủ tục này hoạt động tốt nếu ta hoán đổi giá trị 2 biến thực, tuy nhiên không thể sử dụng nó để hoán đổi giá trị 2 biến nguyên hoặc 2 biến xâu kí tự

void hoandoi(double & a , double & b) {

double tmp;

tmp = a; a = b; b = tmp; }

Trang 4

Chương trình con chung, kiểu chung

chương trình con chung sẽ tham số hóa các kiểu dữ liệu dự định sẽ sử dụng

 Thủ tục hoandoi được viết dưới dạng thủ tục chung

 T là một kiểu chung và sẽ được thay thế bởi một kiểu

Trang 5

// Hóa đổi giá trị hai số thực, hai xâu kí tự

string str1(“neu co quyet tam");

string str2("chung ta se tien bo");

cout<<"Truoc: "<< str1 <<" "<< str2 <<endl;

hoandoi(str1, str2);

cout<<"Sau: "<< str1 <<" "<< str2 <<endl;

Trang 6

truy cập tới dữ liệu của đối tượng thuộc lớp, cú pháp:

x.tên_phương_thức(danh_sách_tham_số);

Trang 7

Lớp string

C++ hỗ trợ xâu kí tự thông qua lớp string, để sử

dụng lớp string cần khai báo #include <string> ở

Trang 8

Lớp string

 Có thể coi xâu kí tự kiểu string là một mảng các kí

tự kiểu char và có thể truy cập tới các kí tự riêng

biệt của xâu thông qua chỉ số

Trang 9

Các toán tử với xâu kí tự

s[i] Truy cập đến phần tử thứ i của

s + s2 Trả về xâu mới là xâu s nối với

xâu s2

(xem trang 473-474)

Trang 10

Phương thức Ý nghĩa

s.push_back(c) Gắn ký tự c vào xâu s

s.append(s2) Gắn xâu s2 vào xâu s

s.erase(pos,len) Xóa bỏ len kí tự khỏi s, bắt đầu từ pos

s.find(s2) Trả về ví trí của s2 trong s, hoặc

s.npos nếu không tìm thấy s2

s.insert(pos,s2) Chèn xâu s2 vào s bắt đầu từ pos

s.replace(pos,num,

s2)

Thay thế các kí tự trong xâu s bằng toàn bộ xâu s2, bắt đầu từ vị trí pos trong xâu s

s.resize(len)

Xác định lại chiều dài của xâu s là len, bỏ bớt đi hoặc thêm vào xâu s các

kí tự null khi cần

s.size() Trả về số phần tử trong xâu s

s.substr(pos,len) Trả về xâu mới gồm các phần tử của xâu

s từ s[pos] s[pos+len]

Các thao tác với xâu kí tự (tr.473-474):

Trang 11

Các hàm kí tự (nhắc lại)

Một số hàm kí tự trong thư viện cctype(tr.463-464):

 int isalnum ( char c): trả về true nếu c là một ký tự hay số

 int isalpha ( char c): trả về true nếu c là một ký tự

 int isdigit ( char c): trả về true nếu c là một số hệ 10

 int isspace ( char c): trả về true nếu c là một khoảng trống

 int isupper ( char c): trả về true nếu c là một chữ hoa

 int tolower ( char c): đổi kí tự c sang chữ thường

 int toupper ( char c): đổi kí tự c sang chữ hoa

Trang 12

//Đổi một xâu kí tự thành dạng viết hoa

getline(cin, line); // nhận một xâu từ bàn phím

cout << upperCase(line) << endl; // in xâu dưới dạng viết hoa

Trang 13

// Sử dụng một số thao tác với xâu kí tự

string str="Dao duc cao nhat cua con nguoi la gi?“

"Do chinh la long yeu nuoc.";

string str2, str3;

int pos;

str2 = str.substr (0,33); // "Dao duc cao nhat cua con nguoi la"

pos = str.find("long"); // vị trí của "long" trong str

str3 = str.substr (pos); // lấy từ "long" đến hết xâu

cout << str2 << ' ' << str3 << endl;

return 0;

}

Trang 14

Lớp vector

 Lớp vector là một kiểu cấu trúc dữ liệu mảng động, làm việc giống như mảng thông thường tuy nhiên có thêm khả năng tự động thay đổi kích cỡ khi chèn và loại bỏ đối tượng

 vector có thể chứa được hầu hết các kiểu dữ liệu,

thậm chí là các vector khác (vector của các vector)

để truy cập tới các phần tử, thêm các phần tử vào đầu hoặc cuối, xóa các phần tử và kiểm tra số phần

tử được lưu trữ

Trang 15

Khai báo vector

 Để sử dụng lớp vector cần khai báo

#include <vector> ở đầu chương trình

 Các cách khai báo một vector

1 vector < kiểu_dữ_liệu > tên_vector;

2 vector < kiểu_dữ_liệu > tên_vector(so_pt);

3 vector < kiểu_dữ_liệu > tên_vector(so_pt, e);

trong đó:

- so_pt là biểu thức trả về số phần tử của vector

- e là giá trị khởi tạo của các phần tử

Trang 16

Khai báo vector

 vector< double > B(10, 1.0); //Khai báo vector B

gồm 10 phần tử kiểu double có giá trị khởi tạo là 1.0

 vector< string > C(10, ”Hi!”); //Khai báo vector C

gồm 10 phần tử kiểu string có giá trị khởi tạo là “Hi!”

Trang 17

Ghép thêm phần tử e vào cuối vector v Đổi cỡ của vector v thành newSize

Trả về số phần tử của vector v

Trang 18

Nhập giá trị cho vector

 Cách 1: Khai báo vector sau khi nhập số phần tử của vector

cout << "Nhap gia tri cho cac phan tu:\n";

for ( int i = 0; i < n; i++)

{

cout << “A[“<<i<<”]=“;

cin >> A[i];

}

Trang 19

Nhập giá trị cho vector

 Cách 2: Khai báo vector, nhập số phần tử của vector, sau đó điều

cout << "Nhap gia tri cho cac phan tu:\n";

for (int i = 0; i < n; i++)

{

cout << "A["<<i<<"]=";

cin >> A[i];

}

Trang 20

Nhập giá trị cho vector

 Cách 3: Nhập giá trị cho các phần tử của vector cho đến khi

người dùng muốn dừng lại

vector<double> A;

double x;

char traloi;

cout << "Ban co muon nhap khong(y/n)?"; cin >> traloi;

while (traloi == 'y')

{

cout << "Nhap mot gia tri:"; cin >> x;

A.push_back(x); //gắn giá trị vừa nhập vào cuối vertor cout << “Tiep tuc nhap(y/n)?"; cin >> traloi;

}

Trang 21

In vector ra màn hình

 In vector ra màn hình: có thể thay A.size() bằng n nếu n là kích cỡ vector

cout <<"Cac phan tu cua day la:"<<endl;

for ( int i = 0; i < A.size(); i++)

cout << A[i] <<" ";

Trang 22

/*Nhập điểm cho một nhóm sinh viên và lưu vào vector, sau đó in ra

for (int i = 0; i < n; i++) {

cout << "Nhap diem cho sinh vien " << i+1 << ": ";

cin >> sv_diem[i];

}

for (int i = 0; i < sv_diem.size(); i++) {

cout << "Sinh vien " << i+1 << '\t' << sv_diem[i]<<endl;

}

return 0;

}

Trang 23

// Thiết lập một dãy mới gồm các phần tử dương của dãy đã nhập

cout << "Nhap gia tri cho cac phan tu:\n";

for (int i = 0; i < n; i++){

cout<<"Cac phan tu cua day da nhap la:"<<endl;

for (int i = 0; i < A.size(); i++) cout << A[i] <<" ";

cout<<endl;

cout<<"Cac phan tu duong cua day la:"<<endl;

for (int i = 0; i < B.size(); i++) cout << B[i] <<" ";

Trang 24

Vector của các vector

 Khai báo 1 vector các số thực:

vector<double> row(7)

 Khai báo 1 vector chứa các vector số thực:

vector<vector<double>> table(3, row)

Một bảng hai chiều

kích thước 3*7 Một hàng có độ dài là 7

Trang 25

//Nhập dữ liệu cho một vector của vector và in nó ra màn hình

using namespace std;

template<class T> void nhapvectorcuavector(vector< vector< T > > & w) {

cout<<"Nhap gia tri cho cac phan tu cua vector:"<<endl;

for ( unsigned int i = 0; i < w.size(); i ++)

for ( unsigned int j = 0; j < w[i].size(); j ++) {

cout << "w[" << i << "][" << j << "] =";

cin >> w[i][j];

}

}

template<class T> void invectorcuavector(vector< vector< T > > w) {

cout<<"In gia tri cac phan tu cua vector:"<<endl;

for ( unsigned int i = 0; i < w.size(); i ++) {

for ( unsigned int j = 0; j < w[i].size(); j ++) cout << w[i][j] << " ";

cout << "Nhap so hang, cot cua vector:" ; cin >> m >> n ;

vector < double > row(n); vector < vector < double > > table(m,row);

nhapvectorcuavector(table);

Trang 26

đã nhập

Ngày đăng: 30/01/2020, 17:36

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm