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

pdf 19 trang huongle 2760
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:

  • pdfgiao_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

  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 1
  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 2
  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: 3
  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 4
  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: 5
  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 6
  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; 7
  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 > 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
  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) 9
  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 > 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
  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 > 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
  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 > 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
  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 > 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
  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 14
  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; 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 > m >> n; for (i=0; i > a[i][j]; } 16
  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; } 17
  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 18
  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 > 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