Thông tin tài liệu
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
Ngày đăng: 03/12/2015, 20:50
Xem thêm: Bài giảng kỹ thuật lập trình bài 8 phạm đình sắc