Kĩ thuật lập trình - Chương 2: Ma trận

Khái niệm

Khai báo

Các thao tác cơ bản trên ma trận

Thao tác trên ma trận vuông

Bài tập

 

pptx28 trang | Chia sẻ: Mr Hưng | Lượt xem: 866 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Kĩ thuật lập trình - Chương 2: Ma trận, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRẦN MINH THÁIEmail: minhthai@itc.edu.vnWebsite: www.minhthai.edu.vn Cập nhật: 05 tháng 01 năm 2015Chương 2. Ma trậnNội dungKhái niệmKhai báoCác thao tác cơ bản trên ma trậnThao tác trên ma trận vuôngBài tậpKhái niệmKiểu dữ liệu ma trận được tổ chức theo dạng bảng 2 chiều. Thực chất mỗi dòng của ma trận là mảng 1 chiềuKích thước được xác định bởi số dòng và số cộtChỉ số dòng và cột được tính từ 0Khái niệmDòng 0Dòng 1Dòng 2Dòng 3Cột 0Cột 1Cột 2Cột 3Cột 4Cột 5Ma trận có 4 dòng 6 cột (kích thước 4 x 6)Khai báo ma trận Cú pháp tên ma trận [số dòng][số cột];VD1: khai báo ma trận số nguyên a có 10 dòng và 15 cột int a[10][15];VD2: khai báo ma trận số thực b có 25 dòng và 10 cột float b[25][10];Định nghĩa kiễu dữ liệuĐể đơn giản trong việc khai báo ma trận:#define MAX 100typedef matran[MAX][MAX]; VD: Khai báo ma trận các số nguyên a#define MAX 100typedef int matran[MAX][MAX];matran a;Khai báo và khởi gán tên ma trận[số dòng][số cột]={{gt11, gt12, }, {gt21, gt22, }, {gtk1, gtk2, }};VD: int a[3][4] = {{2,3,9,4}, {5,6,7,6}, {2,9,4,7} };Truy xuất phần tử Để truy xuất các thành phần của ma trận ta dựa vào chỉ số dòng và chỉ số cột.Cú pháp: tên ma trận[chỉ số dòng][chỉ số cột]VD: x = a[1][2]; // x = 7 // Cập nhật giá trị tại chỉ số dòng 2, cột 3 thành 10 a[2][3] = 10; Các thao tácNhập/ xuấtTìm kiếmĐếmTính tổng/ trung bìnhSắp xếp dòng/ cộtXóa dòng/ cộtChèn thêm dòng/ cộtCác thao tácSử dụng 2 vòng lặp lồng nhau để duyệt ma trậnMỗi lần lặp sẽ duyệt từng dòng của ma trậnGọi sd là số dòng, sc là số cột và a là ma trận. Cấu trúc duyệt tổng quát: for(int d=0; d và 2. Dùng hàm srand((unsigned int) time(NULL)) ở đầu hàm main()17Bài tập tìm kiếmCho ma trận số nguyên, viết các hàm:Tìm phần tử lớn nhấtTìm vị trí phần tử lớn nhấtTìm vị trí xuất hiện đầu tiên của phần tử có giá trị xTìm dòng có tổng lớn nhấtTìm cột có tổng nhỏ nhấtTính tổng của 1 dòng trong ma trận aDòng 0Dòng 1Dòng 2Dòng sd-1Cột 0Cột 1Cột 2Cột 3Cột sc-1Tổng dòng 2 = a[2][0] + a[2][1] + a[2][2] + + a[2][sc-1]  Tổng dòng k = a[k][0] + a[k][1] + a[k][2] + + a[k][sc-1] Tính tổng của 1 dòng trong ma trận aGọi s là tổng dòng ks = a[k][0] + a[k][1] + a[k][2] + + a[k][sc-1]  int s = 0;for(int i=0; i<=sc -1; i++){ s = s + a[k][i];}Tính tổng của 1 cột trong ma trận aDòng 0Dòng 1Dòng 2Dòng sd-1Cột 0Cột 1Cột 2Cột 3Cột sc-1Tổng cột 2 = a[0][2] + a[1][2] + a[2][2] + + a[sd-1][2]  Tổng cột k = a[0][k] + a[1][k] + a[2][k] + + a[sd-1][k] Tính tổng của 1 cột trong ma trận aGọi s là tổng cột ks = a[0][k] + a[1][k] + a[2][k] + + a[sd-1][k]  int s = 0;for(int i=0; i<=sd -1; i++){ s = s + a[i][k];}22Bài tập xóaCho ma trận số nguyên, viết các hàm:Xóa dòng có chứa giá trị lớn nhấtXóa cột có chứa giá trị xMa trận vuông Ma trận có số dòng và số cột bằng nhauĐường chéo chính: chỉ số dòng = chỉ số cộtĐường chéo phụ: chỉ số cột+chỉ số dòng = k/thước - 10,00,51,11,42,22,33,23,34,14,45,05,5Bài tập nhập/xuấtCho ma trận vuông số nguyên kích thước n, viết các hàm:Nhập ma trậnXuất ma trậnXuất các phần tử thuộc đường chéo chínhXuất các phần tử thuộc đường chéo phụBài tập nhập/xuấtCho ma trận vuông số nguyên kích thước n, viết các hàm:Xuất các phần tử thuộc phần tam giác phía dưới của đường chéo chínhBài tập nhập/xuấtCho ma trận vuông số nguyên kích thước n, viết các hàm:Xuất các phần tử thuộc phần tam giác phía trên đường chéo phụBài tậpCho ma trận vuông số nguyên kích thước n, viết các hàm:Tính tổng các phần tử không thuộc đường chéo chính. Tính giá trị trung bình các phần tử thuộc đường chéo phụ. Tìm phần tử có giá trị lớn nhất thuộc đường chéo chính.Q&A

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

  • pptx_chuong2_matran_8805.pptx