Giáo trình môn học Tin đại cương - Bài 7: Cấu trúc mảng - Lý Anh Tuấn
Bạn đang xem tài liệu "Giáo trình môn học Tin đại cương - Bài 7: Cấu trúc mảng - Lý Anh Tuấn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_mon_hoc_tin_dai_cuong_bai_7_cau_truc_mang_ly_anh.pdf
Nội dung text: Giáo trình môn học Tin đại cương - Bài 7: Cấu trúc mảng - Lý Anh Tuấn
- 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 {} Ví dụ: int a[5] = { 16, 2, 77, 40, 12071 }; //hoặc 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ụ: Có thể viết các lệnh gán: a[0]=75; a[1]=2*a[0]; 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 Một số thao tác với mảng: Nhập dữ liệu cho mảng cout > n; for (i=0; i > a[i]; } In các giá trị của mảng ra màn hình cout << "Day da nhap la:" << endl; for (i=0; i<n; i++) cout << a[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 > n; for (i=0; i > a[i]; } s = 0 ; for (i=0; i<n; i++) s = s + a[i]; cout << "Day da nhap la:" << endl; for (i=0; i<n; i++) cout << a[i] << " "; cout << "Tong cac phan tu cua day la " << s << endl; return 0; } 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 > n; for (i=0; i > a[i]; } dem = 0 ; for (i=0; i 0) dem++; cout << "Day da nhap la:" << endl; for (i=0; i<n; i++) cout << a[i] << " "; cout << "So phan tu duong trong day la " << dem << endl; return 0; } 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 > n; for (i=0; i > a[i]; } min = a[0]; k = 0; for (i=1; i<n; i++) if (a[i] < min ) { min = a[i]; k = i; } cout << "So be nhat la " << min << " tai vi tri " << k; return 0; } 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 > n; for (i=0; i > a[i]; } for (i=0; i a[j]) { tam = a[i]; a[i] = a[j]; a[j] = tam; } cout << "Day sau khi duoc sap xep:" << endl; for (i=0; i<n; i++) cout << a[i] << " "; return 0; } 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: Nhập dữ liệu cho mảng hai chiều cout > m >> n; for (i=0; i > a[i][j]; } 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<m; i++) { for (j=0; j<n; j++) cout << a[i][j] << " "; cout << endl; } 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
- //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 > n; for (i=0; i > a[i][j]; } s=0; for (i=0; i<n; i++) s=s+a[i][i]; cout << "Ma tran vuong da nhap la:" << endl; for (i=0; i<n; i++) { for (j=0; j<n; j++) cout << a[i][j] << " "; cout << endl; } cout << "Trung binh cong cac phan tu tren duong cheo chinh la "<< s/n; } 19