Lập trình C#

Jagged Array trong lập trình C#

Jagged Array trong lập trình C#
Được viết bởi Minh Hoàng

Series lập trình C#, ngôn ngữ lập trình hiện đại và mạnh mẽ.

Jagged Array trong C#

– Chúng ta thấy mảng hai chiều được ứng nhiều trong thực tế. Tuy nhiên, mảng hai chiều cũng có sự cứng nhắc về cách khai báo. Đó là: hàng đầu tiên của mảng hay bất kỳ hàng nào cũng phải có cùng số cột (số cột phải giống nhau).

– Trong trường hợp chúng ta mong muốn một cấu trúc mảng mà hàng đầu tiên có 2 cột, hàng thứ 2 có 3 cột, hàng thứ 3 có 4 cột,… thì với cách khai báo của mảng hai chiều sẽ không đáp ứng được yêu cầu như vậy.

– Do đó, đã ra đời cách khai báo Jagged Array trong C#. Và cũng giống mảng hai chiều là một Jagged Array trong C# là một mảng của các mảng mà mỗi phần tử là một mảng với kích thước có thể khác nhau. Những mảng con này phải được khai báo từng mảng con một.

– Cách khai báo một Jagged Array

Kiểu_dữ_liệu[][] tên_mảng;

– Khai báo, cấp phát vùng nhớ và khởi tạo một Jagged Array

int[][] jaggedArr = new int[2][]
{
	new int[] { 97, 98, 99 },
	new int[] { 1, 2, 3, 4 }
};

Trong đó:

  • jaggedArr là một mảng có 2 dòng (mỗi dòng là một mảng integer) và số cột bao nhiêu là chưa biết.
  • jaggedArr[0] là một mảng 3 số nguyên integer: 97, 98, 99
  • jaggedArr[1] là một mảng 4 số nguyên integer: 1, 2, 3, 4

– Minh họa Jagged Array:
Ví dụ 1:

using System;

namespace MinhHoangBlog
{
	class Program
	{
		static void Main(string[] args)
		{
			/* Khai báo một jagged array gồm 5 mảng con kiểu integer */
			int[][] a = new int[][]
			{
				new int[] { 0, 0 },
				new int[] { 1, 2 },
				new int[] { 2, 4 },
				new int[] { 3, 6 },
				new int[] { 4, 8 }
			};

			/* In giá trị từng mảng con của jagged array */
			for (int row = 0; row < 5; row++)
			{
				for (int col = 0; col < 2; col++)
				{
					Console.Write("a[{0}][{1}] = {2}\t", row, col, a[row][col]);
				}
				Console.WriteLine();
			}
			Console.ReadKey();
		}
	}
}

Kết quả chương trình

Kết quả chương trình

Ví dụ 2:

using System;

namespace MinhHoangBlog
{
	class Program
	{
		static void Main(string[] args)
		{
			// Khai báo một jagged array A kiểu integer
			int[][] A;

			// Khởi tạo mảng A: 5 dòng, số cột chưa biết
			A = new int[5][];

			/* Khởi tạo số cột cho từng dòng:
			 * row đầu tiên có 1 col
			 * row thứ 2 có 2 col 
			 * row thứ 3 có 3 col
			 * row thứ 4 có 4 col
			 * row thứ 5 có 5 col
			 */
			for (int row = 0; row < A.Length; row++)
			{
				A[row] = new int[row + 1];
			}

			// Nhập liệu và in mảng ra màn hình
			for ( int row = 0; row < 5; row++ )
			{
				for ( int col = 0; col < A[row].Length; col++ )
				{
					A[row][col] = row + col;
					Console.Write( A[row][col] + " " );
				}
				Console.WriteLine();
			}

			Console.ReadKey();
		}
	}
}
Kết quả chương trình

Kết quả chương trình

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »