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

Bài giảng Nhập môn lập trình - Chương 8: Mảng hai chiều

32 17 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

Cấu trúc

  • Nội dung

  • Ma Trận

  • Slide 3

  • Khai báo kiểu mảng 2 chiều

  • Khai báo biến mảng 2 chiều

  • Slide 6

  • Truy xuất đến một phần tử

  • Gán dữ liệu kiểu mảng

  • Truyền mảng cho hàm

  • Slide 10

  • Một số bài toán cơ bản

  • Một số quy ước

  • Thủ tục HoanVi & Hàm LaSNT

  • Nhập Ma Trận

  • Hàm Nhập Ma Trận

  • Xuất Ma Trận

  • Hàm Xuất Ma Trận

  • Tìm kiếm một phần tử trong Ma Trận

  • Hàm Tìm Kiếm

  • Kiểm tra tính chất của mảng

  • Hàm Kiểm Tra (Cách 1)

  • Hàm Kiểm Tra (Cách 2)

  • Slide 23

  • Tính tổng các phần tử

  • Hàm tính tổng trên dòng

  • Hàm tính tổng trên cột

  • Hàm tính tổng đường chéo chính

  • Hàm tính tổng trên đường chéo chính

  • Hàm tính tổng dưới đường chéo chính

  • Hàm tính tổng trên đường chéo phụ

  • Tìm giá trị lớn nhất của Ma Trận

  • Hàm tìm Max

Nội dung

Sau khi đã tìm hiểu về mảng một chiều ở chương 7, trong chương 8 chúng ta sẽ tìm hiểu về mảng hai chiều. Trong chương này chúng ta sẽ biết thế nào là mảng 2 chiều, biết cách khai báo mảng 2 chiều và truy xuất dữ liệu kiểu mảng, tìm hiểu một số bài toán trên mảng 2 chiều. Mời tham khảo.

&& VC VC BB BB Nội dung Khái niệm Khai báo Truy xuất liệu kiểu mảng Một số toán mảng chiều NMLT - Mảng hai chiều && VC VC BB BB Ma Trận … n-1 0 m-1 An … … Am,n … n-1 n-1 NMLT - Mảng hai chiều && VC VC BB BB Ma Trận … n-1 0 … … n-1 n-1 dòng > cột … n-1 0 dòng < cột … n-1 0 … … … n-1 n-1 dòng + cột > n-1 … n-1 n-1 dòng + cột = n-1 … n-1 n-1 dòng = cột An … n-1 … An dòng + cột < n-1 NMLT - Mảng hai chiều && VC VC BB BB Khai báo kiểu mảng chiều  Cú pháp typedef [][];  N1, N2: số lượng phần tử chiều  Ví dụ typedef int MaTran[3][4]; Kiểu MaTran NMLT - Mảng hai chiều && VC VC BB BB Khai báo biến mảng chiều  Cú pháp  Tường minh [][];  Không tường minh (thông qua kiểu) typedef [][]; ; , ; NMLT - Mảng hai chiều && VC VC BB BB Khai báo biến mảng chiều  Ví dụ  Tường minh int a[10][20], b[10][20]; int c[5][10]; int d[10][20];  Không tường minh (thông qua kiểu) typedef int MaTran10x20[10][20]; typedef int MaTran5x10[5][10]; MaTran10x20 a, b; MaTran11x11 c; MaTran10x20 d; NMLT - Mảng hai chiều && VC VC BB BB Truy xuất đến phần tử  Thông qua số [][]  Ví dụ  Cho mảng chiều sau int a[3][4];  Các truy xuất • Hợp lệ: a[0][0], a[0][1], …, a[2][2], a[2][3] • Khơng hợp lệ: a[-1][0], a[2][4], a[3][3] NMLT - Mảng hai chiều && VC VC BB BB Gán liệu kiểu mảng  Không sử dụng phép gán thông thường mà phải gán trực tiếp phần tử  Ví dụ int a[5][10], b[5][10]; b = a; // Sai int i, j; for (i = 0; i < 5; i++) for (j = 0; j < 10; j++) b[i][j] = a[i][j]; NMLT - Mảng hai chiều && VC VC BB BB Truyền mảng cho hàm  Truyền mảng cho hàm  Tham số kiểu mảng khai báo hàm giống khai báo biến mảng void NhapMaTran(int a[50][100]);  Tham số kiểu mảng truyền cho hàm địa phần tử mảng • Có thể bỏ số lượng phần tử chiều thứ trỏ • Mảng thay đổi nội dung sau thực hàm void NhapMaTran(int a[][100]); void NhapMaTran(int (*a)[100]); NMLT - Mảng hai chiều && VC VC BB BB Truyền mảng cho hàm  Truyền mảng cho hàm  Số lượng phần tử thực truyền qua biến khác void XuatMaTran(int a[50][100], int m, int n); void XuatMaTran(int a[][100], int m, int n); void XuatMaTran(int (*a)[100], int m, int n);  Lời gọi hàm void NhapMaTran(int a[][100], int &m, int &n); void XuatMaTran(int a[][100], int m, int n); void main() { int a[50][100], m, n; NhapMaTran(a, m, n); XuatMaTran(a, m, n); } NMLT - Mảng hai chiều && VC VC BB BB Tìm kiếm phần tử Ma Trận  Yêu cầu  Tìm xem phần tử x có nằm ma trận a kích thước mxn hay không?  Ý tưởng  Duyệt phần ma trận a Nếu phần tử xét x trả có (1), ngược lại trả khơng có (0) NMLT - Mảng hai chiều && VC VC BB BB Hàm Tìm Kiếm int TimKiem(int a[][MAXC], int m, int n, int x) { int i, j; for (i=0; i

Ngày đăng: 08/05/2021, 19:10