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

1

Cấu trúc mảng

 Mảng một chiều  Khai báo mảng  Sử dụng mảng  Một số bài toán  Mảng hai chiều

 Khai báo mảng hai chiều  Sử dụng mảng hai chiều  Một số bài toán

2

Mảng

 Mảng là tập hữu hạn các phần tử có cùng kiểu dữ liệu và chiếm một vùng liên tục trong bộ nhớ

 Vị trí tương đối giữa các phần tử trong mảng được

xác định bởi chỉ số

 Ví dụ: Mảng a chứa 5 giá trị nguyên kiểu int có thể

được biểu diễn như sau:

3

Khai báo mảng

 Khai báo mảng: kiểu_dữ_liệu tên_mảng[số_phần_tử];  Ví dụ:

 int a[5]; // khai báo mảng a gồm 5 phần tử số

nguyên có chỉ số từ 0 đến 4

 double x[10],y[10]; //khai báo hai mảng thực x,y mỗi mảng gồm 10 phần tử có chỉ số từ 0 đến 9

4

Khai báo mảng

 Khi khai báo một mảng, chúng ta có thể gán giá trị ban đầu cho các phần tử của mảng bằng cách đặt các giá trị trong cặp dấu {}

int a[5] = { 16, 2, 77, 40, 12071 }; //hoặc

 Ví dụ: int a[] = { 16, 2, 77, 40, 12071 }; các khai báo này tạo ra một mảng như sau:

5

Sử dụng mảng

 Có thể thao tác với các phần tử của mảng như thao tác với một biến thông thường  Các phần tử của mảng được xác định theo

cách sau:

Tênmảng[chỉ_số]  Ví dụ: Các phần tử của mảng a

6

Sử dụng mảng

 Ví dụ:

a[0]=75; a[1]=2*a[0];

 Có thể viết các lệnh gán:  Chỉ số là cũng có thể là một biến nguyên, hoặc

một biểu thức nguyên: i=4; a[i]=5;

a[i/2+1]=17;

7

Sử dụng mảng

cout << "a[" << i << "] = " ; cin >> a[i];

 Một số thao tác với mảng:  Nhập dữ liệu cho mảng cout << "Nhap so phan tu cua day:" ; cin >> n; for (i=0; i

8

Một số bài toán

 Tính tổng các phần tử của mảng  Đếm số phần tử dương trong mảng  Tìm phần tử lớn nhất (bé nhất) của mảng, và

vị trí xuất hiện của nó

 Sắp xếp mảng theo chiều tăng dần (giảm

dần)

9

// Tính tổng các phần tử của dãy #include using namespace std; int main() { float a[50], s; int i, n; cout << "Nhap so phan tu cua day: " ; cin >> n; for (i=0; i

10

// Đếm số phần tử dương trong dãy #include using namespace std; int main() { float a[50]; int i, n, dem; cout << "Nhap so phan tu cua day: " ; cin >> n; for (i=0; i

11

// Tìm phần tử bé nhất trong dãy, và vị trí xuất hiện của nó #include using namespace std; int main() { float a[50], min; int i, n, k; cout << "Nhap so phan tu cua day: " ; cin >> n; for (i=0; i

12

// Sắp xếp dãy theo chiều tăng dần #include using namespace std; int main() { float a[50], tam; int i, j, n; cout << "Nhap so phan tu cua day: " ; cin >> n; for (i=0; i

13

Mảng hai chiều

 Mảng hai chiều còn gọi là ma trận, là sự mở

rộng của mảng một chiều

 Ví dụ: Mảng hai chiều a gồm 3*5 phần tử có cùng kiểu dữ liệu có thể biểu diễn như sau

14

Khai báo mảng hai chiều

 Khai báo mảng hai chiều: kiểu_dữ_liệu tên_mảng[m][n];

 m,n là số hàng, số cột của mảng hai chiều  ví dụ: int a[3][5]; //khai báo mảng gồm 3*5 phần tử kiểu nguyên từ a[0][0] đến a[2][4]

 Các phần tử của mảng hai chiều được xác

định theo cách sau:

Tênmảng[chỉ_số_hàng][chỉ_số_cột]

 ví dụ: a[1][3]=6; a[i][j]=15;

15

Sử dụng mảng hai chiều

 Một số thao tác với mảng hai chiều:

cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];

 Nhập dữ liệu cho mảng hai chiều cout << "Nhap so hang, so cot cua ma tran:" ; cin >> m >> n; for (i=0; i

16

Sử dụng mảng hai chiều

 In các giá trị của mảng hai chiều ra màn

hình

cout << "Ma tran da nhap la:" << endl; for (i=0; i

17

Một số bài toán

 Các bài toán trên mảng hai chiều quy về thực

hiện trên mảng một chiều  Thực hiện các tính toán trên một hàng, một cột hoặc trên đường chéo chính của mảng hai chiều

 Các bài toán thực hiện tính toán trên toàn bộ

mảng hai chiều. Ví dụ:  Tính tổng tất cả các phần tử của mảng hai chiều  Đếm số phần tử dương trong mảng hai chiều  Tìm giá trị lớn nhất (bé nhất), và vị trí xuất hiện

của nó trong mảng hai chiều

18

cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j];

//Tính trung bình cộng các phần tử trên đường chéo chính của ma trận vuông #include using namespace std; int main() { double a[10][10],s; int n,i,j; cout << "Nhap bac cua ma tran vuong:"; cin >> n; for (i=0; i

19