1. Trang chủ
  2. » Thể loại khác

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)

38 24 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Mảng 2 Chiều
Trường học Trường Đại học Ngoại ngữ - Tin học TP.HCM
Chuyên ngành Công nghệ thông tin
Thể loại Bài tập thực hành
Thành phố TP.HCM
Định dạng
Số trang 38
Dung lượng 1,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... Mảng 2 chiều thực chất là mảng 1 c

Trang 1

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)

Trang 3

KHÁI NIỆM MẢNG 2 CHIỀU

Trang 4

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

Trang 5

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

Trang 8

KHAI BÁO MẢNG 2 CHIỀU

8

Trang 9

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)

int[,] a; // mảng 2 chiều

int[][] a; // mảng răng cưa 2 chiều

Trang 10

<kiểu cơ sở> [,] <tên mảng> ; <kiểu cơ sở> [][] <tên mảng> ;

Khai báo (System.Array)

int[][] a;

a = new int[3][];

a[0] = new int[5];

a[1] = new int[5];

a[2] = new int[5];

Trang 11

Khai báo (System.Array)

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];

Trang 12

Khởi tạo giá trị:

Khai báo (System.Array)

Trang 13

TRUY XUẤT DỮ LIỆU

KIỂU MẢNG 2 CHIỀU

Trang 14

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

Trang 15

NHẬP, XUẤT MẢNG 2 CHIỀU

Trang 16

Yêu cầu: Nhập vào từ bàn phím một mảng a

Trang 17

Kiểu mảng răng cưa

Nhập mảng 2 chiều

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());

} }

}

Trang 18

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());

} }

}

Trang 19

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

Trang 20

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);

}

Trang 21

Kiểu mảng nhiều chiều

Xuất mảng 2 chiều

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);

}

Trang 22

BÀI TẬP THỰC HÀNH

22

Trang 23

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

Input:

- 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

- 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

Trang 24

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

Trang 25

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

Trang 26

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

Trang 27

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

Trang 28

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

Trang 29

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

Trang 30

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

Trang 31

Bài 15: Viết chương trình nhân 2 ma trận

Trang 32

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

Trang 33

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

Trang 34

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

Trang 35

Bài 18: Bảng kết quả của một giải vô địch bóng đá

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:

Trang 36

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

Trang 37

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

Trang 38

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

Ngày đăng: 23/05/2021, 01:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm