Bài giảng Tin đại cương - Buổi 7&8: Cấu trúc mảng - Lý Anh Tuấn

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

pdf19 trang | Chia sẻ: phuongt97 | Lượt xem: 593 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Tin đại cương - Buổi 7&8: Cấu trúc mảng - Lý Anh Tuấn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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 2 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 3 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: 4 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 5 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: 6 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 7 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; 8 Sử dụng mảng  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<n; i++) { cout << "a[" << i << "] = " ; cin >> 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] << " "; 9 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) 10 // 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<n; i++) { cout << "a[" << i << "] = " ; cin >> 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; } 11 // Đế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<n; i++) { cout << "a[" << i << "] = " ; cin >> a[i]; } dem = 0 ; for (i=0; i0) 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; } 12 // 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<n; i++) { cout << "a[" << i << "] = " ; cin >> 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; } 13 // 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<n; i++) { cout << "a[" << i << "] = " ; cin >> a[i]; } for (i=0; i<n; i++) for (j=i+1; j<n; j++) if (a[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; } 14 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 15 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; 16 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 << "Nhap so hang, so cot cua ma tran:" ; cin >> m >> n; for (i=0; i<m; i++) for (j=0; j<n; j++) { cout << "a[" << i << "][" << j << "] = " ; cin >> a[i][j]; } 17 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; } 18 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 19 //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<n; i++) for (j=0; j<n; j++) { cout << "a[" << i << "][" << j << "] = " ; cin >> 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; }

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_tin_dai_cuong_buoi_78_cau_truc_mang_ly_anh_tuan.pdf
Tài liệu liên quan