Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
3,17 MB
Nội dung
Trường Cao đẳng Kỹ thuật Công nghệ Đồng Nai Khoa Cơng nghệ thơng tin NHẬP MƠN LẬP TRÌNH Phạm Đình Sắc dinhsac@gmail.com MẢNG HAI CHIỀU 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 … n-1 0 … n-1 … … n-1 n-1 n-1 dòng = cột dòng > cột dòng < cột 0 … n-1 … n-1 … … n-1 n-1 n-1 dòng + cột = n-1 dòng + cột > n-1 … n-1 … An … 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 10 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 11 Một số tốn Viết chương trình thực yêu cầu sau Nhập mảng Xuất mảng Tìm kiếm phần tử mảng Kiểm tra tính chất mảng Tính tổng phần tử dịng/cột/tồn ma trận/đường chéo chính/nửa trên/nửa Tìm giá trị nhỏ nhất/lớn mảng … NMLT - Mảng hai chiều 12 VC VC && BB BB Một số quy ước Kiểu liệu #define MAXD 50 #define MAXC 100 Các chương trình Hàm void HoanVi(int x, int y): hoán vị giá trị hai số nguyên Hàm int LaSNT(int n): kiểm tra số có phải số nguyên tố Trả n số nguyên tố, ngược lại trả NMLT - Mảng hai chiều VC VC && BB BB 13 Thủ tục HoanVi & Hàm LaSNT NMLT - Mảng hai chiều 14 VC VC && Nhập Ma Trận BB BB Yêu cầu Cho phép nhập mảng a, m dòng, n cột Ý tưởng Cho trước mảng chiều có dịng tối đa MAXD, số cột tối đa MAXC Nhập số lượng phần tử thực m, n chiều Nhập phần tử từ [0][0] đến [m-1][n-1] NMLT - Mảng hai chiều VC VC && BB BB 15 Hàm Nhập Ma Trận void NhapMaTran(int a[][MAXC], int &m, int &n) { printf(“Nhap so dong, so cot cua ma tran: ”); scanf(“%d%d”, &m, &n); int i, j; for (i=0; i