intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình C nâng cao‎: Chương 2 - Trần Minh Thái

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PPTX | Số trang:28

82
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 2 của bài giảng trang bị cho người học những hiểu biết về ma trận như; Khái niệm ma trận, khai báo ma trận, các thao tác cơ bản trên ma trận, thao tác trên ma trận vuông và một số bài tập. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C nâng cao‎: Chương 2 - Trần Minh Thái

  1. Chương 2. Ma trận TRẦN MINH THÁI Email: minhthai@itc.edu.vn Website: www.minhthai.edu.vn  Cập nhật: 05 tháng 01 năm 2015
  2. Nội dung #2 • 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
  3. Khái niệm #3 • Kiể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ều • Kích thước được xác định bởi số dòng và số cột • Chỉ số dòng và cột được tính từ 0
  4. Khái niệm #4 Cột Cột Cột Cột Cột Cột 0 1 2 3 4 5 Dòng 0 Dòng 1 Dòng 2 Dòng 3 Ma trận có 4 dòng 6 cột (kích thước 4 x 6)
  5. Khai báo ma trận #5 • 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];
  6. Định nghĩa kiễu dữ liệu #6 Để đơn giản trong việc khai báo ma trận: #define MAX 100 typedef  matran[MAX][MAX];  VD: Khai báo ma trận các số nguyên a #define MAX 100 typedef int matran[MAX][MAX]; matran a;
  7. Khai báo và khởi gán #7 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} };
  8. Truy xuất phần tử #8 Đê ̉ truy  xuất  các  thành  phần  cua  ̉ ma  trận  ta  dựa  ̉ ́ dòng và chi sô vào chi 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 
  9. Các thao tác #9 • Nhập/ xuất • Tìm kiếm • Đếm • Tính tổng/ trung bình • Sắp xếp dòng/ cột • Xóa dòng/ cột • Chèn thêm dòng/ cột
  10. Các thao tác #10 • Sử dụng 2 vòng lặp lồng nhau để duyệt ma trận • Mỗi lần lặp sẽ duyệt từng dòng của ma trận • Gọ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
  11. Nhập/xuất ma trận số nguyên #11 Khai báo #define MAX 100 typedef int matran[MAX][MAX]; void NhapMT(matran a, int sd, int sc); void XuatMT(matran a, int sd, int sc);
  12. Nhập/xuất ma trận số nguyên #12 void NhapMT(matran a, int sd, int sc) { for(int d=0; d
  13. Nhập/xuất ma trận số nguyên #13 void XuatMT(matran a, int sd, int sc) { for(int d=0; d
  14. Nhập/xuất ma trận số nguyên #14 void main() { matran a; int sd, sc; printf("Nhap so dong cua ma tran: "); scanf(“%d”, &sd); printf("Nhap so cot cua ma tran: “); scanf(“%d”, &sc); NhapMT(a, sd, sc); printf(“Cac phan tu trong ma tran\n”); XuatMT(a, sd, sc); }
  15. Bài tập nhập/xuất #15 Cho ma trận số nguyên a gồm sd dòng và sc cột. Viết  các hàm: • Phát sinh giá trị ngẫu nhiên cho ma trận • Xuất các phần tử lẻ • Xuất các phần tử là số nguyên tố • Xuất các phần tử có giá trị lớn hơn x
  16. Phát sinh giá trị ngẫu nhiên #16 void PhatSinh(matran a, int sd, int sc) { for (int d = 0; d
  17. Bài tập tìm kiếm #17 Cho ma trận số nguyên, viết các hàm: 1. Tìm phần tử lớn nhất 2. Tìm vị trí phần tử lớn nhất 3. Tìm vị trí xuất hiện đầu tiên của phần tử có giá trị  x 4. Tìm dòng có tổng lớn nhất 5. Tìm cột có tổng nhỏ nhất 17
  18. Tính tổng của 1 dòng trong ma trận a #18 Cột Cột Cột Cột Cột 0 1 2 3 sc-1 Dòng 0 … Dòng 1 … Dòng 2 … … … … … … … Dòng sd- … 1 Tổ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]
  19. Tính tổng của 1 dòng trong ma trận a #19 Gọi s là tổng dòng k s = a[k][0] + a[k][1] + a[k][2] + … + a[k][sc-1] int s = 0; for(int i=0; i
  20. Tính tổng của 1 cột trong ma trận a #20 Cột Cột Cột Cột Cột 0 1 2 3 sc-1 Dòng 0 … Dòng 1 … Dòng 2 … … … … … … … Dòng sd- … 1 Tổ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]
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2