SlideShare a Scribd company logo
Trường Đại học Khoa học Tự nhiên
Khoa Công nghệ thông tin
Bộ môn Công nghệ phần mềm


       NHẬP MÔN LẬP TRÌNH
                                    ThS. Đặng Bình Phương
                                     dbphuong@fit.hcmus.edu.vn




                                   MẢNG HAI CHIỀU




                                                                 1
&
VC
     BB
          Nội dung


               1     Khái niệm


               2     Khai báo


               3     Truy xuất dữ liệu kiểu mảng


               4     Một số bài toán trên mảng 2 chiều




                                                         Mảng hai chiều
                                                                          2
&
VC
     BB
           Ma Trận




                0   1   … n-1              0   … n-1

           0                         0

 Am,n                           An
           …




                                      …
          m-1                        n-1




                                                       Mảng hai chiều
                                                                        3
&
VC
     BB
           Ma Trận

                0   … n-1          0   … n-1          0   … n-1

          0                  0                  0

     An
           …




                              …




                                                 …
          n-1                n-1                n-1


                dòng = cột         dòng > cột         dòng < cột

                0   … n-1          0   … n-1          0   … n-1

          0                  0                  0

     An
           …




                              …




                                                 …
          n-1                n-1                n-1


          dòng + cột = n-1   dòng + cột > n-1 dòng + cột < n-1
                                                            Mảng hai chiều
                                                                             4
&
VC
     BB
            Khai báo kiểu mảng 2 chiều

     Cú pháp
          typedef <kiểu cơ sở> <tên kiểu>[<N1>][<N2>];

       N1, N2: số lượng phần tử mỗi chiều
     Ví dụ
          typedef int MaTran[3][4];


                             0   1   2   3

                         0

           Kiểu MaTran   1

                         2

                                                     Mảng hai chiều
                                                                      5
&
VC
     BB
            Khai báo biến mảng 2 chiều

     Cú pháp
       Tường minh
          <kiểu cơ sở> <tên biến>[<N1>][<N2>];


           Không tường minh (thông qua kiểu)
          typedef <kiểu cơ sở> <tên kiểu>[<N1>][<N2>];

          <tên kiểu> <tên biến>;
          <tên kiểu> <tên biến 1>, <tên biến 2>;



                                                     Mảng hai chiều
                                                                      6
&
VC
     BB
            Khai báo biến mảng 2 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;

                                                Mảng hai chiều
                                                                 7
&
VC
     BB
            Truy xuất đến một phần tử

     Thông qua chỉ số
          <tên biến mảng>[<giá trị cs1>][<giá trị cs2>]

     Ví dụ                                           0   1    2      3

                                                  0
       Cho mảng 2 chiều như sau
                                                  1
          int a[3][4];
                                                  2
           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]



                                                          Mảng hai chiều
                                                                           8
&
VC
     BB
            Gán dữ liệu kiểu mảng

     Không được sử dụng phép gán thông thường
      mà phải gán trực tiếp giữa các phần tử
          <biến mảng đích> = <biến mảng nguồn>; //sai
          <biến mảng đích>[<giá trị cs1>][giá trị cs2] =
                                                   <giá trị>;
     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];
                                                     Mảng hai chiều
                                                                      9
&
VC
     BB
            Truyền mảng cho hàm

     Truyền mảng cho hàm
        Tham số kiểu mảng trong khai báo hàm giống
         như khai báo biến mảng
          void NhapMaTran(int a[50][100]);

           Tham số kiểu mảng truyền cho hàm chính là địa
            chỉ của phần tử đầu tiên của mảng
             • Có thể bỏ số lượng phần tử chiều thứ 2 hoặc con trỏ.
             • Mảng có thể thay đổi nội dung sau khi thực hiện hàm.
          void NhapMaTran(int a[][100]);
          void NhapMaTran(int (*a)[100]);

                                                     Mảng hai chiều
                                                                      10
&
VC
     BB
            Truyền mảng cho hàm

     Truyền mảng cho hàm
        Số lượng phần tử thực sự 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);
          }                                           Mảng hai chiều
                                                                       11
&
VC
     BB
          Một số bài toán cơ bản

     Viết chương trình con thực hiện các yêu cầu sau
       Nhập mảng
       Xuất mảng
       Tìm kiếm một phần tử trong mảng
       Kiểm tra tính chất của mảng
       Tính tổng các phần tử trên dòng/cột/toàn ma
        trận/đường chéo chính/nửa trên/nửa dưới
       Tìm giá trị nhỏ nhất/lớn nhất của mảng
      …

                                           Mảng hai chiều
                                                            12
&
VC
     BB
            Một số quy ước

     Kiểu dữ liệu
          #define MAXD 50
          #define MAXC 100

     Các chương trình con
       Hàm void HoanVi(int x, int y): hoán vị giá trị
        của hai số nguyên.
       Hàm int LaSNT(int n): kiểm tra một số có phải
        là số nguyên tố. Trả về 1 nếu n là số nguyên
        tố, ngược lại trả về 0.

                                             Mảng hai chiều
                                                              13
&
VC
     BB
              Thủ tục HoanVi & Hàm LaSNT

          void HoanVi(int &x, int &y)
          {
                 int tam = x; x = y; y = tam;
          }

          int LaSNT(int n)
          {
                 int i, dem = 0;
                 for (i = 1; i <= n; i++)
                        if (n % i == 0)
                               dem++;

                if (dem == 2)
                       return 1;
                else return 0;
          }
                                                Mảng hai chiều
                                                                 14
&
VC
     BB
           Nhập Ma Trận

     Yêu cầu
           Cho phép nhập mảng a, m dòng, n cột
     Ý tưởng
           Cho trước một mảng 2 chiều có dòng tối đa là MAXD,
            số cột tối đa là MAXC.
           Nhập số lượng phần tử thực sự m, n của mỗi chiều.
           Nhập từng phần tử từ [0][0] đến [m-1][n-1].




                                                   Mảng hai chiều
                                                                    15
&
VC
     BB
              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 < m; i++)
                       for (j = 0; j < n; j++)
                       {
                              printf(“Nhap a[%d][%d]: ”, i, j);
                              scanf(“%d”, &a[i][j]);
                       }
          }



                                                      Mảng hai chiều
                                                                       16
&
VC
     BB
           Xuất Ma Trận

     Yêu cầu
           Cho phép nhập mảng a, m dòng, n cột
     Ý tưởng
           Xuất giá trị từng phần tử của mảng 2 chiều từ dòng
            có 0 đến dòng m-1, mỗi dòng xuất giá giá trị của cột 0
            đến cột n-1 trên dòng đó.




                                                      Mảng hai chiều
                                                                       17
&
VC
     BB
              Hàm Xuất Ma Trận

          void XuatMaTran(int a[][MAXC], int m, int n)
          {
                 int i, j;
                 for (i = 0; i < m; i++)
                 {
                        for (j = 0; j < n; j++)
                               printf(“%d ”, a[i][j]);

                       printf(“n”);
                }
          }




                                                     Mảng hai chiều
                                                                      18
&
VC
     BB
           Tìm kiếm một phần tử trong Ma Trận

     Yêu cầu
           Tìm xem phần tử x có nằm trong ma trận a kích
            thước mxn hay không?
     Ý tưởng
           Duyệt từng phần của ma trận a. Nếu phần tử đang
            xét bằng x thì trả về có (1), ngược lại trả về không có
            (0).




                                                        Mảng hai chiều
                                                                         19
&
VC
     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 < m; i++)
                        for (j = 0; j < n; j++)
                               if (a[i][j] == x)
                                      return 1;
                 return 0;
          }




                                                     Mảng hai chiều
                                                                      20
&
VC
     BB
           Kiểm tra tính chất của mảng

     Yêu cầu
           Cho trước ma trận a kích thước mxn. Ma trận a có
            phải là ma trậntoàn các số nguyên tố hay không?
     Ý tưởng
           Cách 1: Đếm số lượng số ngtố của ma trận. Nếu số
            lượng này bằng đúng mxn thì ma trận toàn ngtố.
           Cách 2: Đếm số lượng số không phải ngtố của ma
            trận. Nếu số lượng này bằng 0 thì ma trận toàn ngtố.
           Cách 3: Tìm xem có phần tử nào không phải số ngtố
            không. Nếu có thì ma trận không toàn số ngtố.


                                                      Mảng hai chiều
                                                                       21
&
VC
     BB
              Hàm Kiểm Tra (Cách 1)

          int KiemTra_C1(int a[][MAXC], int m, int n)
          {
                 int i, j, dem = 0;

                for (i = 0; i < m; i++)
                       for (j = 0; j < n; j++)
                              if (LaSNT(a[i][j] == 1)
                                     dem++;

                if (dem == m * n)
                       return 1;
                return 0;
          }



                                                        Mảng hai chiều
                                                                         22
&
VC
     BB
              Hàm Kiểm Tra (Cách 2)

          int KiemTra_C2(int a[][MAXC], int m, int n)
          {
                 int i, j, dem = 0;

                for (i = 0; i < m; i++)
                       for (j = 0; j < n; j++)
                              if (LaSNT(a[i][j] == 0)
                                     dem++;

                if (dem == 0)
                       return 1;
                return 0;
          }



                                                        Mảng hai chiều
                                                                         23
&
VC
     BB
              Hàm Kiểm Tra (Cách 2)

          int KiemTra_C3(int a[][MAXC], int m, int n)
          {
                 int i, j, dem = 0;

                for (i = 0; i < m; i++)
                       for (j = 0; j < n; j++)
                              if (LaSNT(a[i][j] == 0)
                                     return 0;

                return 1;
          }




                                                        Mảng hai chiều
                                                                         24
&
VC
     BB
           Tính tổng các phần tử

     Yêu cầu
           Cho trước ma trận a, kích thước mxn. Tính tổng các
            phần tử trên:
             •   Dòng d, cột c
             •   Đường chéo chính, đường chéo phụ (ma trận vuông)
             •   Nửa trên/dưới đường chéo chính (ma trận vuông)
             •   Nửa trên/dưới đường chéo phụ (ma trận vuông)
     Ý tưởng
           Duyệt ma trận và cộng dồn các phần tử có tọa độ (dòng,
            cột) thỏa yêu cầu.


                                                           Mảng hai chiều
                                                                            25
&
VC
     BB
              Hàm tính tổng trên dòng

          int TongDong(int a[][MAXC], int m, int n, int d)
          {
                 int j, tong;

                tong = 0;

                for (j = 0; j < n; j++)    // Duyệt các cột
                       tong = tong + a[d][j];

                return tong;
          }




                                                     Mảng hai chiều
                                                                      26
&
VC
     BB
              Hàm tính tổng trên cột

          int TongCot(int a[][MAXC], int m, int c)
          {
                 int i, tong;

                tong = 0;

                for (i = 0; i < m; i++)    // Duyệt các dòng
                       tong = tong + a[i][c];

                return tong;
          }




                                                     Mảng hai chiều
                                                                      27
&
VC
     BB
              Hàm tính tổng đường chéo chính

          int TongDCChinh(int a[][MAXC], int n)
          {
                 int i, tong;

                tong = 0;

                for (i = 0; i < n; i++)
                       tong = tong + a[i][i];

                return tong;
          }




                                                  Mảng hai chiều
                                                                   28
&
VC
     BB
              Hàm tính tổng trên đường chéo chính

          int TongTrenDCChinh(int a[][MAXC], int n)
          {
                 int i, j, tong;

                tong = 0;

                for (i = 0; i < n; i++)
                       for (j = 0; j<n; j++)
                              if (i < j)
                                     tong = tong + a[i][j];

                return tong;
          }



                                                      Mảng hai chiều
                                                                       29
&
VC
     BB
              Hàm tính tổng dưới đường chéo chính

          int TongTrenDCChinh(int a[][MAXC], int n)
          {
                 int i, j, tong;

                tong = 0;

                for (i = 0; i < n; i++)
                       for (j = 0; j < n; j++)
                              if (i > j)
                                     tong = tong + a[i][j];

                return tong;
          }



                                                      Mảng hai chiều
                                                                       30
&
VC
     BB
              Hàm tính tổng trên đường chéo phụ

          int TongDCPhu(int a[][MAXC], int n)
          {
                 int i, tong;

                tong = 0;

                for (i = 0; i < n; i++)
                       tong = tong + a[i][n-i-1];

                return tong;
          }




                                                    Mảng hai chiều
                                                                     31
&
VC
     BB
           Tìm giá trị lớn nhất của Ma Trận

     Yêu cầu
           Cho trước ma trận a, kích thước mxn. Tìm giá trị lớn
            nhất trong ma trận a (gọi là max)
     Ý tưởng
           Giả sử giá trị max hiện tại là giá trị phần tử đầu tiên
            a[0][0]
           Lần lượt kiểm tra các phần tử còn lại để cập nhật max.




                                                      Mảng hai chiều
                                                                       32
&
VC
     BB
              Hàm tìm Max

          int TimMax(int a[][MAXC], int m, int n)
          {
                 int i, j, max;

                max = a[0][0];

                for (i = 0; i < m; i++)
                       for (j = 0; j < n; j++)
                              if (a[i][j] > max)
                                     max = a[i][j];

                return max;
          }



                                                      Mảng hai chiều
                                                                       33

More Related Content

What's hot

Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CHuy Rùa
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Thanh Giảng Lê
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
Nhóc Nhóc
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHai Rom
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
anhhuycan83
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
viethung094
 
Hệ phương trình vi phân tuyến tính
Hệ phương trình vi phân tuyến tínhHệ phương trình vi phân tuyến tính
Hệ phương trình vi phân tuyến tínhThế Giới Tinh Hoa
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tinHuy Rùa
 
Danh Sach Lien Ket
Danh Sach Lien KetDanh Sach Lien Ket
Danh Sach Lien KetTony Nhân
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngDavid Nguyen
 
Chuyên đề Định luật Ohm tổng quát
Chuyên đề Định luật Ohm tổng quátChuyên đề Định luật Ohm tổng quát
Chuyên đề Định luật Ohm tổng quátLee Ein
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựHuy Rùa
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trường Phạm
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
Nhóc Nhóc
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
www. mientayvn.com
 
Công thức truyền tin
Công thức truyền tinCông thức truyền tin
Công thức truyền tinakprovip
 
Chia subnetmask
Chia subnetmaskChia subnetmask
Chia subnetmask
ptquang160492
 

What's hot (20)

Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình C
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanh
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
 
Hệ phương trình vi phân tuyến tính
Hệ phương trình vi phân tuyến tínhHệ phương trình vi phân tuyến tính
Hệ phương trình vi phân tuyến tính
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tin
 
Bai tap oop c++
Bai tap oop c++Bai tap oop c++
Bai tap oop c++
 
Danh Sach Lien Ket
Danh Sach Lien KetDanh Sach Lien Ket
Danh Sach Lien Ket
 
Lttt b11
Lttt b11Lttt b11
Lttt b11
 
KTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm ĐộngKTMT Số Nguyên - Số Chấm Động
KTMT Số Nguyên - Số Chấm Động
 
Chuyên đề Định luật Ohm tổng quát
Chuyên đề Định luật Ohm tổng quátChuyên đề Định luật Ohm tổng quát
Chuyên đề Định luật Ohm tổng quát
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tự
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
 
Công thức truyền tin
Công thức truyền tinCông thức truyền tin
Công thức truyền tin
 
Chia subnetmask
Chia subnetmaskChia subnetmask
Chia subnetmask
 

Viewers also liked

Khoahoctunhien.net mang1chieu
Khoahoctunhien.net mang1chieuKhoahoctunhien.net mang1chieu
Khoahoctunhien.net mang1chieu
Nguyen Van Hung
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
AnhTuấn Nguyễn
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
zingoncmu2
 
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
Minh Ngoc Tran
 
Nmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCNmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCCuong
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhCuong
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuCuong
 
Ttnam dhsp dstt2
Ttnam dhsp dstt2Ttnam dhsp dstt2
Ttnam dhsp dstt2
Bắc Sơn
 
Giai tich lop 11 co ban
Giai tich lop 11 co banGiai tich lop 11 co ban
Giai tich lop 11 co banVcoi Vit
 
Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++
ptquang160492
 
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMSMô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
Thanh Nguyen
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuật
Pham Hoang
 
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
Phuong ThayTro.Net
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1Tran Trung Dung
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh ctiểu minh
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
Trung Thanh Nguyen
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
MasterCode.vn
 

Viewers also liked (20)

Baitap ktlt
Baitap ktltBaitap ktlt
Baitap ktlt
 
Khoahoctunhien.net mang1chieu
Khoahoctunhien.net mang1chieuKhoahoctunhien.net mang1chieu
Khoahoctunhien.net mang1chieu
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
 
Nmlt c10 cau_truc
Nmlt c10 cau_trucNmlt c10 cau_truc
Nmlt c10 cau_truc
 
Nmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTCNmlt C02 GioiThieuNNLTC
Nmlt C02 GioiThieuNNLTC
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
 
Nmlt C08 Mang2 Chieu
Nmlt C08 Mang2 ChieuNmlt C08 Mang2 Chieu
Nmlt C08 Mang2 Chieu
 
Ttnam dhsp dstt2
Ttnam dhsp dstt2Ttnam dhsp dstt2
Ttnam dhsp dstt2
 
Giai tich lop 11 co ban
Giai tich lop 11 co banGiai tich lop 11 co ban
Giai tich lop 11 co ban
 
Bai tap c
Bai tap cBai tap c
Bai tap c
 
Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++
 
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMSMô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
Mô Tả Chức Năng & Báo Giá - phần mềm Quản Lý Hệ Thống Phân Phối SmartBiz DMS
 
Tài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuậtTài liệu Matlab kỹ thuật
Tài liệu Matlab kỹ thuật
 
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
Kiểm tra 1 tiết unit 9, 10, 11 tiếng anh 10 trường THPT Trị An 2011
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPTBài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
Bài 1: Tổng quan về cấu trúc và giải thuật - Giáo trình FPT
 

Similar to Phần 8: Mảng hai chiều

Nmlt c12 mang2_chieu
Nmlt c12 mang2_chieuNmlt c12 mang2_chieu
Nmlt c12 mang2_chieuvitbau1412
 
c3 mang2 chieu
c3 mang2 chieuc3 mang2 chieu
c3 mang2 chieu
Cau Chu Nho
 
Nmlt c08 mang2_chieu
Nmlt c08 mang2_chieuNmlt c08 mang2_chieu
Nmlt c08 mang2_chieu
Minh Ngoc Tran
 
Mang1 chieu
Mang1 chieuMang1 chieu
Mang1 chieu
Cau Chu Nho
 
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_in
Huy Nguyễn
 
Nmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_inNmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_in
Huy Nguyễn
 
NMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptxNMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptx
TngNguyn371609
 
Nmlt c07 mang1_chieu
Nmlt c07 mang1_chieuNmlt c07 mang1_chieu
Nmlt c07 mang1_chieu
Minh Ngoc Tran
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucoso
Minh Ngoc Tran
 
Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
Huy Nguyễn
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuCuong
 
Nmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_inNmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_in
Huy Nguyễn
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
Minh Ngoc Tran
 
Nmlt c11 con_trocoban
Nmlt c11 con_trocobanNmlt c11 con_trocoban
Nmlt c11 con_trocoban
Minh Ngoc Tran
 
Session 4
Session 4Session 4
Session 4
pnanhvn
 
Nmlt c14 cac_kythuatthaotactrenbit_in
Nmlt c14 cac_kythuatthaotactrenbit_inNmlt c14 cac_kythuatthaotactrenbit_in
Nmlt c14 cac_kythuatthaotactrenbit_in
Huy Nguyễn
 
Matrix and Computational in Matlab
Matrix and Computational in MatlabMatrix and Computational in Matlab
Matrix and Computational in Matlab
VuTienLam
 
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPix Nhox
 
Nmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_inNmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_in
Huy Nguyễn
 

Similar to Phần 8: Mảng hai chiều (20)

Nmlt c12 mang2_chieu
Nmlt c12 mang2_chieuNmlt c12 mang2_chieu
Nmlt c12 mang2_chieu
 
c3 mang2 chieu
c3 mang2 chieuc3 mang2 chieu
c3 mang2 chieu
 
Nmlt c08 mang2_chieu
Nmlt c08 mang2_chieuNmlt c08 mang2_chieu
Nmlt c08 mang2_chieu
 
Mang1 chieu
Mang1 chieuMang1 chieu
Mang1 chieu
 
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_in
 
Nmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_inNmlt c07 mang1_chieu_in
Nmlt c07 mang1_chieu_in
 
NMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptxNMLT_C07_Mang1Chieu.pptx
NMLT_C07_Mang1Chieu.pptx
 
Nmlt c07 mang1_chieu
Nmlt c07 mang1_chieuNmlt c07 mang1_chieu
Nmlt c07 mang1_chieu
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucoso
 
Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
 
Nmlt C07 Mang1 Chieu
Nmlt C07 Mang1 ChieuNmlt C07 Mang1 Chieu
Nmlt C07 Mang1 Chieu
 
Nmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_inNmlt c13 con_tronangcao_in
Nmlt c13 con_tronangcao_in
 
Nmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequyNmlt c16 ky_thuatlaptrinhdequy
Nmlt c16 ky_thuatlaptrinhdequy
 
Nmlt c11 con_trocoban
Nmlt c11 con_trocobanNmlt c11 con_trocoban
Nmlt c11 con_trocoban
 
344444
344444344444
344444
 
Session 4
Session 4Session 4
Session 4
 
Nmlt c14 cac_kythuatthaotactrenbit_in
Nmlt c14 cac_kythuatthaotactrenbit_inNmlt c14 cac_kythuatthaotactrenbit_in
Nmlt c14 cac_kythuatthaotactrenbit_in
 
Matrix and Computational in Matlab
Matrix and Computational in MatlabMatrix and Computational in Matlab
Matrix and Computational in Matlab
 
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09aPplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a
 
Nmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_inNmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_in
 

Phần 8: Mảng hai chiều

  • 1. Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thông tin Bộ môn Công nghệ phần mềm NHẬP MÔN LẬP TRÌNH ThS. Đặng Bình Phương dbphuong@fit.hcmus.edu.vn MẢNG HAI CHIỀU 1
  • 2. & VC BB Nội dung 1 Khái niệm 2 Khai báo 3 Truy xuất dữ liệu kiểu mảng 4 Một số bài toán trên mảng 2 chiều Mảng hai chiều 2
  • 3. & VC BB Ma Trận 0 1 … n-1 0 … n-1 0 0 Am,n An … … m-1 n-1 Mảng hai chiều 3
  • 4. & VC BB Ma Trận 0 … n-1 0 … n-1 0 … n-1 0 0 0 An … … … n-1 n-1 n-1 dòng = cột dòng > cột dòng < cột 0 … n-1 0 … n-1 0 … n-1 0 0 0 An … … … n-1 n-1 n-1 dòng + cột = n-1 dòng + cột > n-1 dòng + cột < n-1 Mảng hai chiều 4
  • 5. & VC BB Khai báo kiểu mảng 2 chiều Cú pháp typedef <kiểu cơ sở> <tên kiểu>[<N1>][<N2>];  N1, N2: số lượng phần tử mỗi chiều Ví dụ typedef int MaTran[3][4]; 0 1 2 3 0 Kiểu MaTran 1 2 Mảng hai chiều 5
  • 6. & VC BB Khai báo biến mảng 2 chiều Cú pháp  Tường minh <kiểu cơ sở> <tên biến>[<N1>][<N2>];  Không tường minh (thông qua kiểu) typedef <kiểu cơ sở> <tên kiểu>[<N1>][<N2>]; <tên kiểu> <tên biến>; <tên kiểu> <tên biến 1>, <tên biến 2>; Mảng hai chiều 6
  • 7. & VC BB Khai báo biến mảng 2 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; Mảng hai chiều 7
  • 8. & VC BB Truy xuất đến một phần tử Thông qua chỉ số <tên biến mảng>[<giá trị cs1>][<giá trị cs2>] Ví dụ 0 1 2 3 0  Cho mảng 2 chiều như sau 1 int a[3][4]; 2  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] Mảng hai chiều 8
  • 9. & VC BB Gán dữ liệu kiểu mảng Không được sử dụng phép gán thông thường mà phải gán trực tiếp giữa các phần tử <biến mảng đích> = <biến mảng nguồn>; //sai <biến mảng đích>[<giá trị cs1>][giá trị cs2] = <giá trị>; 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]; Mảng hai chiều 9
  • 10. & VC BB Truyền mảng cho hàm Truyền mảng cho hàm  Tham số kiểu mảng trong khai báo hàm giống như khai báo biến mảng void NhapMaTran(int a[50][100]);  Tham số kiểu mảng truyền cho hàm chính là địa chỉ của phần tử đầu tiên của mảng • Có thể bỏ số lượng phần tử chiều thứ 2 hoặc con trỏ. • Mảng có thể thay đổi nội dung sau khi thực hiện hàm. void NhapMaTran(int a[][100]); void NhapMaTran(int (*a)[100]); Mảng hai chiều 10
  • 11. & VC BB Truyền mảng cho hàm Truyền mảng cho hàm  Số lượng phần tử thực sự 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); } Mảng hai chiều 11
  • 12. & VC BB Một số bài toán cơ bản Viết chương trình con thực hiện các yêu cầu sau  Nhập mảng  Xuất mảng  Tìm kiếm một phần tử trong mảng  Kiểm tra tính chất của mảng  Tính tổng các phần tử trên dòng/cột/toàn ma trận/đường chéo chính/nửa trên/nửa dưới  Tìm giá trị nhỏ nhất/lớn nhất của mảng … Mảng hai chiều 12
  • 13. & VC BB Một số quy ước Kiểu dữ liệu #define MAXD 50 #define MAXC 100 Các chương trình con  Hàm void HoanVi(int x, int y): hoán vị giá trị của hai số nguyên.  Hàm int LaSNT(int n): kiểm tra một số có phải là số nguyên tố. Trả về 1 nếu n là số nguyên tố, ngược lại trả về 0. Mảng hai chiều 13
  • 14. & VC BB Thủ tục HoanVi & Hàm LaSNT void HoanVi(int &x, int &y) { int tam = x; x = y; y = tam; } int LaSNT(int n) { int i, dem = 0; for (i = 1; i <= n; i++) if (n % i == 0) dem++; if (dem == 2) return 1; else return 0; } Mảng hai chiều 14
  • 15. & VC BB Nhập Ma Trận Yêu cầu  Cho phép nhập mảng a, m dòng, n cột Ý tưởng  Cho trước một mảng 2 chiều có dòng tối đa là MAXD, số cột tối đa là MAXC.  Nhập số lượng phần tử thực sự m, n của mỗi chiều.  Nhập từng phần tử từ [0][0] đến [m-1][n-1]. Mảng hai chiều 15
  • 16. & VC BB 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 < m; i++) for (j = 0; j < n; j++) { printf(“Nhap a[%d][%d]: ”, i, j); scanf(“%d”, &a[i][j]); } } Mảng hai chiều 16
  • 17. & VC BB Xuất Ma Trận Yêu cầu  Cho phép nhập mảng a, m dòng, n cột Ý tưởng  Xuất giá trị từng phần tử của mảng 2 chiều từ dòng có 0 đến dòng m-1, mỗi dòng xuất giá giá trị của cột 0 đến cột n-1 trên dòng đó. Mảng hai chiều 17
  • 18. & VC BB Hàm Xuất Ma Trận void XuatMaTran(int a[][MAXC], int m, int n) { int i, j; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) printf(“%d ”, a[i][j]); printf(“n”); } } Mảng hai chiều 18
  • 19. & VC BB Tìm kiếm một phần tử trong Ma Trận Yêu cầu  Tìm xem phần tử x có nằm trong ma trận a kích thước mxn hay không? Ý tưởng  Duyệt từng phần của ma trận a. Nếu phần tử đang xét bằng x thì trả về có (1), ngược lại trả về không có (0). Mảng hai chiều 19
  • 20. & VC 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 < m; i++) for (j = 0; j < n; j++) if (a[i][j] == x) return 1; return 0; } Mảng hai chiều 20
  • 21. & VC BB Kiểm tra tính chất của mảng Yêu cầu  Cho trước ma trận a kích thước mxn. Ma trận a có phải là ma trậntoàn các số nguyên tố hay không? Ý tưởng  Cách 1: Đếm số lượng số ngtố của ma trận. Nếu số lượng này bằng đúng mxn thì ma trận toàn ngtố.  Cách 2: Đếm số lượng số không phải ngtố của ma trận. Nếu số lượng này bằng 0 thì ma trận toàn ngtố.  Cách 3: Tìm xem có phần tử nào không phải số ngtố không. Nếu có thì ma trận không toàn số ngtố. Mảng hai chiều 21
  • 22. & VC BB Hàm Kiểm Tra (Cách 1) int KiemTra_C1(int a[][MAXC], int m, int n) { int i, j, dem = 0; for (i = 0; i < m; i++) for (j = 0; j < n; j++) if (LaSNT(a[i][j] == 1) dem++; if (dem == m * n) return 1; return 0; } Mảng hai chiều 22
  • 23. & VC BB Hàm Kiểm Tra (Cách 2) int KiemTra_C2(int a[][MAXC], int m, int n) { int i, j, dem = 0; for (i = 0; i < m; i++) for (j = 0; j < n; j++) if (LaSNT(a[i][j] == 0) dem++; if (dem == 0) return 1; return 0; } Mảng hai chiều 23
  • 24. & VC BB Hàm Kiểm Tra (Cách 2) int KiemTra_C3(int a[][MAXC], int m, int n) { int i, j, dem = 0; for (i = 0; i < m; i++) for (j = 0; j < n; j++) if (LaSNT(a[i][j] == 0) return 0; return 1; } Mảng hai chiều 24
  • 25. & VC BB Tính tổng các phần tử Yêu cầu  Cho trước ma trận a, kích thước mxn. Tính tổng các phần tử trên: • Dòng d, cột c • Đường chéo chính, đường chéo phụ (ma trận vuông) • Nửa trên/dưới đường chéo chính (ma trận vuông) • Nửa trên/dưới đường chéo phụ (ma trận vuông) Ý tưởng  Duyệt ma trận và cộng dồn các phần tử có tọa độ (dòng, cột) thỏa yêu cầu. Mảng hai chiều 25
  • 26. & VC BB Hàm tính tổng trên dòng int TongDong(int a[][MAXC], int m, int n, int d) { int j, tong; tong = 0; for (j = 0; j < n; j++) // Duyệt các cột tong = tong + a[d][j]; return tong; } Mảng hai chiều 26
  • 27. & VC BB Hàm tính tổng trên cột int TongCot(int a[][MAXC], int m, int c) { int i, tong; tong = 0; for (i = 0; i < m; i++) // Duyệt các dòng tong = tong + a[i][c]; return tong; } Mảng hai chiều 27
  • 28. & VC BB Hàm tính tổng đường chéo chính int TongDCChinh(int a[][MAXC], int n) { int i, tong; tong = 0; for (i = 0; i < n; i++) tong = tong + a[i][i]; return tong; } Mảng hai chiều 28
  • 29. & VC BB Hàm tính tổng trên đường chéo chính int TongTrenDCChinh(int a[][MAXC], int n) { int i, j, tong; tong = 0; for (i = 0; i < n; i++) for (j = 0; j<n; j++) if (i < j) tong = tong + a[i][j]; return tong; } Mảng hai chiều 29
  • 30. & VC BB Hàm tính tổng dưới đường chéo chính int TongTrenDCChinh(int a[][MAXC], int n) { int i, j, tong; tong = 0; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (i > j) tong = tong + a[i][j]; return tong; } Mảng hai chiều 30
  • 31. & VC BB Hàm tính tổng trên đường chéo phụ int TongDCPhu(int a[][MAXC], int n) { int i, tong; tong = 0; for (i = 0; i < n; i++) tong = tong + a[i][n-i-1]; return tong; } Mảng hai chiều 31
  • 32. & VC BB Tìm giá trị lớn nhất của Ma Trận Yêu cầu  Cho trước ma trận a, kích thước mxn. Tìm giá trị lớn nhất trong ma trận a (gọi là max) Ý tưởng  Giả sử giá trị max hiện tại là giá trị phần tử đầu tiên a[0][0]  Lần lượt kiểm tra các phần tử còn lại để cập nhật max. Mảng hai chiều 32
  • 33. & VC BB Hàm tìm Max int TimMax(int a[][MAXC], int m, int n) { int i, j, max; max = a[0][0]; for (i = 0; i < m; i++) for (j = 0; j < n; j++) if (a[i][j] > max) max = a[i][j]; return max; } Mảng hai chiều 33