mẢng 2 chiỀu (2d array)anhtt/slidesss/ktlt182/chap4.pdf · 2018-03-29 · mảng 2 chiều...
TRANSCRIPT
![Page 1: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/1.jpg)
Click to edit Master subtitle style
MẢNG 2 CHIỀU (2D Array)
Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học TP.HCM (HUFLIT)
1
![Page 2: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/2.jpg)
Khái niệm Khai báo Truy xuất dữ liệu kiểu mảng 2 chiều Nhập, xuất mảng 2 chiều Bài tập thực hành
NỘI DUNG
2
![Page 3: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/3.jpg)
KHÁI NIỆM MẢNG 2 CHIỀU
3
![Page 4: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/4.jpg)
C# hỗ trợ các kiểu mảng sau: Mảng 1 chiều (single-dimensional array) Mảng nhiều chiều (multi-dimensional array) Mảng răng cưa (jagged array)
Khái niệm
4
![Page 5: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/5.jpg)
Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng khác. Mảng có từ 2 chiều trở lên được gọi chung là mảng nhiều chiều. Mảng nhiều chiều được dùng để lưu các dữ liệu dạng bảng, ma trận trong chương trình.
Khái niệm
5
![Page 6: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/6.jpg)
Ma trận
Khái niệm
6
0
…
n-1
0 1 … m-1
An,m
0
…
n-1
An
0 … n-1
Ma trận vuông
![Page 7: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/7.jpg)
Ma trận vuông
Khái niệm
7
0
…
n-1
An
0 … n-1
0
…
n-1
0 … n-1
0
…
n-1
0 … n-1
dòng = cột dòng > cột dòng < cột
0
…
n-1
An
0 … n-1
0
…
n-1
0 … n-1
0
…
n-1
0 … n-1
dòng + cột = n-1 dòng + cột > n-1 dòng + cột < n-1
![Page 8: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/8.jpg)
KHAI BÁO MẢNG 2 CHIỀU
8
![Page 9: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/9.jpg)
Kiểu mảng nhiều chiều: <kiểu cơ sở>[,] <tên mảng>;
Kiểu mảng răng cưa:
<kiểu cơ sở>[][] <tên mảng>;
Khai báo (System.Array)
9
int[,] a; // mảng 2 chiều
int[][] a; // mảng răng cưa 2 chiều
![Page 10: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/10.jpg)
<kiểu cơ sở>[,] <tên mảng>;
<kiểu cơ sở>[][] <tên mảng>;
Khai báo (System.Array)
10
int[,] b; b = new int[3,5];
Mỗi dòng có thể có số lượng phần tử khác nhau không?
Ví dụ: Khai báo mảng 2 chiều a có 3 dòng, 5 cột
int[][] a; a = new int[3][]; a[0] = new int[5]; a[1] = new int[5]; a[2] = new int[5];
![Page 11: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/11.jpg)
Khai báo (System.Array)
11
int[][] a; a = new int[5][]; a[0] = new int[6]; a[1] = new int[5]; a[2] = new int[2]; a[3] = new int[3]; a[4] = new int[7];
![Page 12: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/12.jpg)
Khởi tạo giá trị:
Khai báo (System.Array)
12
int[][] a = new int[3][] { new int[5]{1,5,9,7,5}, new int[5]{2,7,3,8,4}, new int[5]{8,4,3,7,5}};
int[,] b = new int[3,5]{ {1,5,9,2,3}, {2,7,3,6,4}, {8,4,3,7,9}};
1 5 9 7 5
2 7 3 8 4
8 4 3 7 5
![Page 13: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/13.jpg)
TRUY XUẤT DỮ LIỆU KIỂU MẢNG 2 CHIỀU
13
![Page 14: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/14.jpg)
Thông qua chỉ số (index) tương tự như mảng 1 chiều:
Kiểu mảng nhiều chiều: a[2,3]; Kiểu mảng răng cưa: a[2][3];
Lưu ý: Index phải là số nguyên dương. Index phải nằm trong phạm vi kích thước mảng đã được khai báo, nếu không .NET sẽ báo lỗi IndexOutOfRangeException
Truy xuất phần tử
14
![Page 15: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/15.jpg)
NHẬP, XUẤT MẢNG 2 CHIỀU
15
![Page 16: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/16.jpg)
Yêu cầu: Nhập vào từ bàn phím một mảng a gồm n dòng m cột. Ý tưởng:
Nhập số dòng n và số cột m của mảng. Khởi tạo mảng có n dòng và m cột. Nhập từng phần tử của mảng: từ a[0][0] đến a[n-1][m-1]
Nhập mảng 2 chiều
16
![Page 17: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/17.jpg)
Kiểu mảng răng cưa
Nhập mảng 2 chiều
17
public static void NhapMang(out int[][] a){ int rows, cols; Console.Write("Nhap so dong n = "); rows = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhap so cot m = "); cols = Convert.ToInt32(Console.ReadLine()); a = new int[rows][]; for(int i=0; i<rows; i++){ a[i] = new int[cols]; for(int j=0; j<cols; j++){ Console.Write("a[{0}][{1}] = ", i, j); a[i][j] = Convert.ToInt32(Console.ReadLine()); } } }
![Page 18: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/18.jpg)
Kiểu mảng nhiều chiều
Nhập mảng 2 chiều
18
public static void NhapMang(out int[,] a){ int rows, cols; Console.Write("Nhap so dong cua mang = "); rows = Convert.ToInt32(Console.ReadLine()); Console.Write("Nhap so cot cua mang = "); cols = Convert.ToInt32(Console.ReadLine()); a = new int[rows,cols]; for (int i = 0; i < a.GetLength(0); i++){ for (int j = 0; j < a.GetLength(1); j++){ Console.Write("a[{0},{1}] = ", i, j); a[i,j] = Convert.ToInt32(Console.ReadLine()); } } }
![Page 19: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/19.jpg)
Yêu cầu: In ra màn hình mảng a gồm n dòng m cột. Ý tưởng:
Duyệt mảng từ dòng 0 đến dòng n-1; Tại mỗi dòng, in giá trị của phần tử a[i][j] (j: 0 → m-1), mỗi phần tử cách nhau bởi dấu khoảng trắng. Kết thúc mỗi dòng chèm thêm ký tự xuống dòng “\n”.
Xuất mảng 2 chiều
19
![Page 20: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/20.jpg)
Kiểu mảng răng cưa
Xuất mảng 2 chiều
20
public static void XuatMang(int[][] a){ for (int i = 0; i < a.Length; i++){ for (int j = 0; j < a[i].Length; j++){ Console.Write(a[i][j] + " "); } Console.WriteLine(); } } static void Main(string[] args){ int[][] a; NhapMang(out a); XuatMang(a); }
![Page 21: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/21.jpg)
Kiểu mảng nhiều chiều
Xuất mảng 2 chiều
21
public static void XuatMang(int[,] a){ for (int i = 0; i < a.GetLength(0); i++){ for (int j = 0; j < a.GetLength(1); j++){ Console.Write(a[i,j] + " "); } Console.WriteLine(); } } static void Main(string[] args){ int[,] a; NhapMang(out a); XuatMang(a); }
![Page 22: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/22.jpg)
BÀI TẬP THỰC HÀNH
22
![Page 23: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/23.jpg)
Bài 1: Viết hàm đọc mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚] từ file Input.txt. Lập ma trận B là ma trận chuyển vị của A (𝐵𝐵[𝑖𝑖, 𝑗𝑗] = 𝐴𝐴[𝑗𝑗, 𝑖𝑖]), ghi ma trận B vào file Output.txt.
Input: - Dòng 1 chứa 2 số nguyên dương n,m; - n dòng tiếp theo, mỗi dòng chứa m số nguyên là giá trị các phần tử trong ma trận A.
Output: - Ma trận B là ma trận chuyển vị của ma trận A.
Bài tập thực hành
![Page 24: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/24.jpg)
Bài 2: Viết hàm tìm chỉ số phần tử có giá trị lớn nhất trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚]. Xuất chỉ số và giá trị của phần tử lớn nhất ra màn hình.
Bài tập thực hành
![Page 25: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/25.jpg)
Bài 3: Viết hàm tìm phần tử lớn (nhỏ) nhất trong dòng thứ k (0 ≤ 𝑘𝑘 < 𝑛𝑛) của mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài 4: Viết hàm tìm phần tử lớn (nhỏ) nhất trong cột thứ k 0 ≤ 𝑘𝑘 < 𝑚𝑚 của mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài tập thực hành
![Page 26: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/26.jpg)
Bài 5: Viết hàm thêm một hàng tại vị trí thứ k (0 ≤ 𝑘𝑘 ≤ 𝑛𝑛) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài 6: Viết hàm thêm một cột tại vị trí thứ k (0 ≤ 𝑘𝑘 ≤ 𝑚𝑚) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài tập thực hành
![Page 27: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/27.jpg)
Bài 7: Viết hàm xóa một hàng tại vị trí thứ k (0 ≤ 𝑘𝑘 < 𝑛𝑛) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài 8: Viết hàm xóa một cột tại vị trí thứ k (0 ≤ 𝑘𝑘 < 𝑚𝑚) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài tập thực hành
![Page 28: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/28.jpg)
Bài 9: Viết hàm hoán vị 2 hàng thứ k và l (0 ≤ 𝑘𝑘, 𝑙𝑙 < 𝑛𝑛) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài 10: Viết hàm hoán vị 2 cột thứ k và l (0 ≤ 𝑘𝑘, 𝑙𝑙 < 𝑚𝑚) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài tập thực hành
![Page 29: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/29.jpg)
Bài 11: Viết hàm tính tổng các phần tử của hàng thứ k (0 ≤ 𝑘𝑘 < 𝑛𝑛) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài 12: Viết hàm tính tổng các phần tử của cột thứ k (0 ≤ 𝑘𝑘 < 𝑚𝑚) trong mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚].
Bài tập thực hành
![Page 30: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/30.jpg)
Bài 13: Viết hàm sắp xếp mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚] sao cho tổng của các dòng tăng dần từ trên xuống dưới.
Bài 14: Viết hàm sắp xếp mảng 2 chiều 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚] sao cho tổng của các cột tăng dần từ trái sang phải.
Bài tập thực hành
![Page 31: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/31.jpg)
Bài 15: Viết chương trình nhân 2 ma trận 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑚𝑚] và 𝐵𝐵[𝑚𝑚 𝑥𝑥 𝑝𝑝]. Biết rằng:
𝐴𝐴 𝑛𝑛 𝑥𝑥 𝑚𝑚 ∗ 𝐵𝐵 𝑚𝑚 𝑥𝑥 𝑝𝑝 = 𝐶𝐶[𝑛𝑛 𝑥𝑥 𝑝𝑝]
và 𝐶𝐶𝑖𝑖𝑖𝑖 = ∑ 𝐴𝐴𝑖𝑖𝑖𝑖 .𝐵𝐵𝑖𝑖𝑖𝑖𝑚𝑚
𝑖𝑖=1
Bài tập thực hành
![Page 32: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/32.jpg)
Bài 16: Cho ma trận vuông 𝐴𝐴 𝑛𝑛 𝑥𝑥 𝑛𝑛 . Viết các hàm sau: a) Tính tổng các phần tử nằm trên đường chéo chính. b) Tính tổng các phần tử nằm trên đường chéo phụ. c) Tính tổng các phần tử nằm phía trên đường chéo
chính. d) Tính tổng các phần tử nằm phía trên đường chéo
phụ.
Bài tập thực hành
![Page 33: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/33.jpg)
Bài 17: Cho hai số m và n. Hãy tạo một ma trận xoáy ốc từ ngoài vào trong theo chiều kim đồng hồ với kích thước của ma trận là 𝑚𝑚 𝑥𝑥 𝑛𝑛 (1 ≤ 𝑚𝑚,𝑛𝑛 ≤ 100). Ví dụ: 𝑚𝑚 = 𝑛𝑛 = 4 thì ta có ma trận xoáy ốc như sau:
Bài tập thực hành
![Page 34: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/34.jpg)
Input: Chứa hai số nguyên dương m và n Output: Đưa ra các dòng của ma trận xoáy ốc Ví dụ:
Bài tập thực hành
Input.txt Output.txt
3 4 1 2 3 4
10 11 12 5
9 8 7 6
![Page 35: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/35.jpg)
Bài 18: Bảng kết quả của một giải vô địch bóng đá được cho bởi ma trận 𝐴𝐴[𝑛𝑛 𝑥𝑥 𝑛𝑛] (có n đội tham gia và mỗi đội phải đá vòng tròn 1 lượt, tức là mỗi đội phải đá n – 1 trận). Trong đó:
+ Tất cả các phần tử thuộc đường chéo chính bằng 0 + 𝐴𝐴[𝑖𝑖][𝑗𝑗] = 3 nếu đội i thắng đội j, và đội i có 3 điểm. + 𝐴𝐴[𝑖𝑖][𝑗𝑗] = 1 nếu đội i hòa với đội j, và đội i có 1 điểm. + 𝐴𝐴[𝑖𝑖][𝑗𝑗] = 0 nếu đội i thua đội j, và đội i có 0 điểm.
Hãy thực hiện các công việc sau: a) In ra màn hình tất cả các đội có số điểm lớn nhất. b) In ra màn hình tất cả các đội có số trận thắng nhiều hơn
thua? c) Hãy chỉ ra các đội không thua trận nào?
Bài tập thực hành
![Page 36: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/36.jpg)
Input: - Dòng 1 chứa số nguyên dương n (n <= 50); - n dòng tiếp theo, mỗi dòng chứa n số nguyên là số điểm cả mỗi đội. Output - Dòng 1 là kết quả câu a - Dòng 2 là kết quả câu b - Dòng 2 là kết quả câu c Ví dụ:
Bài tập thực hành
Input.txt Output.txt
4 0 0 0 1 3 0 3 1 3 0 0 1 1 1 1 0
2 2 2 4
![Page 37: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/37.jpg)
Bài 19: Tại một ngôi làng nọ, người ta cần đặt trạm cứu thương tại một hộ dân nào đó sao cho khoảng cách từ trạm đến hộ dân xa trạm nhất là nhỏ nhất. Hãy tìm vị trí đặt trạm cứu thương trong n hộ dân của ngôi làng đó. Biết rằng vị trí của mỗi hộ dân được xác định bằng cặp tọa độ nguyên (x , y).
Bài tập thực hành
![Page 38: MẢNG 2 CHIỀU (2D Array)anhtt/Slidesss/KTLT182/Chap4.pdf · 2018-03-29 · Mảng 2 chiều thực chất là mảng 1 chiều mà mỗi phần tử của nó là một mảng](https://reader034.vdocuments.net/reader034/viewer/2022051321/5b448f557f8b9a2d328c09cb/html5/thumbnails/38.jpg)
Input: - Dòng 1 chứa số nguyên dương n (n <= 50); - n dòng tiếp theo, mỗi dòng chứa cặp số nguyên (x , y) là tọa độ của hộ dân. Output - Dòng 1: Khoảng cách từ trạm cứu thương đến hộ dân xa nhất (làm tròn đến 2 chữ số thập phân). - Dòng 2: Cặp số nguyên (x , y) là tọa độ trạm cứu thương. Ví dụ:
Bài tập thực hành
Input.txt Output.txt
5 1 5 2 3 6 8 9 12 7 3
6.4 (6 , 8)