Khóa học lập trình C# căn bản

Serial tutorial hướng dẫn lập trình C# cơ bản

Mảng 2 chiều trong C# Mảng 2 chiều trong C# Mảng 2 chiều trong C# Mảng 2 chiều trong C# Mảng 2 chiều trong C# 5/5 (279 reviews)

Mảng 2 chiều trong C#

Đã đăng 2016-10-03 09:32:39 bởi Trần Thành Vi Thanh
10 bình luận 34692 lượt xem
Mảng 2 chiều trong C# 5 /5 stars (6 reviews)
 

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về MẢNG MỘT CHIỀU TRONG C#. Hôm nay chúng ta sẽ cùng tìm hiểu về mảng hai chiều trong C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Khai báo, khởi tạo mảng 2 chiều trong C#
  • Sử dụng mảng 2 chiều trong C#

Khai báo, khởi tạo mảng 2 chiều trong C#

Khai báo mảng 2 chiều

Mảng 2 chiều được hình dung như một bảng có m dòng và n cột với một số đặc trưng sau:

  • Mảng 2 chiều mang những đặc trưng cơ bản của một mảng bình thường (đặc trưng về mảng đã trình bày trong bài MẢNG 1 CHIỀU TRONG C#)
  • Các phần tử trong mảng 2 chiều được truy xuất thông qua 2 chỉ số phần tử (tạm gọi là chỉ số dòng và chỉ số cột)
  • Hình ảnh minh họa mảng 2: Giả sử ta có mảng A có 5 dòng và 8 cột

kteam

  •  Các dòng và các cột được đánh số từ 0 và tăng dần. Mỗi phần tử là giao nhau của dòng và cột tương ứng đồng thời ta sử dụng chỉ số dòng cột đó để truy xuất đến phần tử của mảng 2 chiều.
  •  Ví dụ: A[1, 2] là cách truy xuất đến phần tử ở dòng thứ 2 cột thứ 3 (do chỉ số được đánh số từ 0)

Cú pháp:

<kiểu dữ liệu> [ , ] <tên mảng>;

Trong đó:

  • <kiểu dữ liệu> là kiểu dữ liệu của các phần tử trong mảng.
  • Cặp dấu [ , ] là ký hiệu cho khai báo mảng 2 chiều.
  • <tên mảng> là tên của mảng, cách đặt tên mảng cũng như cách đặt tên biến (quy tắc đặt tên biến đã trình bày trong BIẾN TRONG C#).

Để sử dụng được mảng ta phải khởi tạo giá trị hoặc cấp phát vùng nhớ cho mảng.


Cấp phát vùng nhớ

Được thực hiện thông qua toán tử new (đã trình bày trong bài TOÁN TỬ TRONG C#). Lưu ý là khi cấp phát vùng nhớ cho mảng 2 chiều ta cần chỉ ra số dòng và số cột tối đa của mảng.

Ví dụ:

/* 
             * Khai báo mảng 2 chiều kiểu string và có tên là Kteam.
             * Sau đó thực hiện cấp phát vùng nhớ với số dòng là 2 và số cột là 3.
             */
string[,] Kteam = new string[2, 3];

 

Sau khi mảng được cấp phát vùng nhớ thì các phần tử trong mảng sẽ mang giá trị mặc định:

  •  Đối với số nguyên là 0
  •  Đối với số thực là 0.0
  •  Đối với kiểu ký tự là ‘’ (ký tự rỗng)
  •  Đối với kiểu tham chiếu là null

Chúng ta có thể khởi tạo giá trị khác mà chúng ta mong muốn ngay khi cấp phát vùng nhớ bằng cú pháp sau:

<kiểu dữ liệu>[,] <tên mảng> = new <kiểu dữ liệu>[]         

{

            { <giá trị dòng 1 cột 1>, …, <giá trị dòng 1 cột n> },

           …

           { <giá trị dòng m cột 1>, …, <giá trị dòng m cột n> }

};

  •  Vì đây là mảng 2 chiều nên chúng ta sẽ không khởi tạo giống mảng 1 chiều được mà phải khởi tạo giá trị theo từng dòng một. Xem từng dòng là một mảng 1 chiều và khởi tạo như mảng 1 chiều.
  •  Các giá trị khởi tạo nằm trong cặp dấu ngoặc ngọn {} và cách nhau bởi dấu phẩy.
  •  Chúng ta không cần cung cấp số dòng và số cột tối đa mà trình biên dịch sẽ tự đếm xem bạn đã khởi tạo bao nhiều dòng và mỗi dòng bao nhiêu giá trị rồi xem nó như số dòng số cột tối đa.  

Khởi tạo giá trị

Cú pháp:

<kiểu dữ liệu>[,] <tên mảng> =

{

           { <giá trị dòng 1 cột 1>, …, <giá trị dòng 1 cột n> },

            …

           { <giá trị dòng m cột 1>, …, <giá trị dòng m cột n> }

};

Ví dụ:

int[,] IntArray = 
                    { 
                        {1, 2}, 
                        {3, 4}, 
                        {5, 6} 
                    };

 

Về bản chất thì cách này trình biên dịch vẫn xem xét số phần tử khởi tạo và cấp phát vùng nhớ cho biến mảng sau đó thực khởi tạo giá trị cho các phần tử trong mảng. Nhưng cách viết này có vẻ nhanh và gọn hơn so với cách cấp phát vùng nhớ rồi mới khởi tạo giá trị.

Tóm lại, cũng như mảng 1 chiều, mảng 2 chiều cũng có 3 cách khai báo và khởi tạo sau:

  • Khai báo và cấp phát vùng nhớ
string[,] Array = new string[2, 3];
  • Khai báo, cấp phát và khởi tạo giá trị cho mảng
string[,] Kteam = new string[,] 
{
{ "HowKteam", "Free Education" },
{ “HowKteam.com”, “Share to be better” }
}; 
  • Khởi tạo giá trị cho mảng
int[] IntArray = 
                    { 
                        {1, 2}, 
                        {3, 4}, 
                        {5, 6} 
                    };

Sử dụng mảng 2 chiều

Tương tự như mảng 1 chiều, kiểu mảng 2 chiều cũng có thể dùng làm:

  • Kiểu dữ liệu cho biến.
  • Kiểu trả về cho hàm.
  • Tham số truyền vào cho hàm.
    •  Các phần tử của mảng được truy xuất thông qua chỉ số dòng và chỉ số cột (chỉ số dòng viết trước, chỉ số cột viết sau ngăn cách nhau bởi dấu ,) và cặp dấu []. Có thể xem các phần tử của mảng như là các biến đơn và thao tác như thao tác với biến bình thường.
// Khai báo, cấp phát và khởi tạo mảng 2 chiều kiểu string và tên là Kteam
int[,] Kteam = 
                    { 
                        {1, 2}, 
                        {3, 4}, 
                        {5, 6} 
                    };
/* 
 * Vì chỉ số phần tử được đánh số từ 0 nên muốn truy xuất đến phần tử dòng 1 cột 2 của mảng 
thì chỉ số dòng là 0 và chỉ số cột là 1
*/	
            Console.WriteLine(Kteam[0, 1]);

Một số thuộc tính và phương thức đặc trưng của mảng 2 chiều:

 

Còn rất nhiều thuộc tính và phương thức khác, mình chỉ giới thiệu một số cái hay dùng còn lại các bạn có thể tự khám phá.


Cách duyệt mảng 2 chiều:

Ý tưởng:

  •  Tương tự như ý tưởng duyệt mảng 1 chiều (đã trình bày trong bài MẢNG MỘT CHIỀU TRONG C#)
  •  Nhưng do mảng 2 chiều có 2 chỉ số là chỉ số dòng và chỉ số cột nên chúng ta cần 2 vòng lặp lồng vào nhau.

Ví dụ:

int[,] IntArray = new int [9, 10];
            /*
             * Sử dụng 2 vòng for lồng vào nhau để duyệt mảng 2 chiều
             * Vòng lặp ngoài là vòng lặp duyệt mỗi dòng của của mảng 2 chiều
             * Với mỗi dòng thì vòng lặp trong là vòng lặp duyệt các phần tử trên dòng đó (duyệt từng cột trên dòng hiện tại)
             */
            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    /* 
                     * Với cách duyệt này thì IntArray[i, j] sẽ là phần tử hiện tại mình đang xét
                     * Code xử lý sẽ viết ở đây
                     */
                }
            }

 Hình ảnh minh họa:

kteam

  •  Cách duyệt này sẽ duyệt tuần tự các dòng trong mảng 2 chiều, ở mỗi dòng sẽ duyệt từ đầu dòng đến cuối dòng. Bạn hoàn toàn có thể duyệt theo ý mình bằng cách thay đổi giá trị trong vòng lặp.
  •  Ví dụ sau sẽ duyệt theo cột. Tức là duyệt tuần tự từng cột rồi ở mỗi cột duyệt từ trên xuống dưới.
/*
             * Duyệt mảng 2 chiều theo cột
             * Các bạn để ý sự thay đổi trong 2 vòng lặp
             */
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    /* 
                     * Lưu ý là các phần tử được truy xuất là IntArray[j, i] thay vì IntArray[i, j]
                     * Code xử lý 
                     */
                }
            }
  • Để ý là cả 2 cách duyệt mình đều vi phạm 1 điều mà ở phần duyệt mảng 1 chiều của bài trước mình đã trình bày. Đó là nên sử dụng hàm trả về số dòng, số cột thay vì viết cứng một con số cụ thể.
  •  Lúc này hàm GetLength(<số chiều>) thực sự phát huy tác dụng. Các bạn cùng xem nhé:
/*
             * Như đã trình bày ở phần trước thì:
             * GetLength(0) sẽ trả về số dòng của mảng 2 chiều
             * GetLength(1) sẽ trả về số cột của mảng 2 chiều
             */
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    // Code xử lý
                }
            }

Ví dụ chương trình sử dụng mảng 2 chiều

Ta thử xét 1 ví dụ đơn giản đó là viết chương trình cho phép nhập vào giá trị số nguyên cho 1 mảng 2 chiều bất kỳ sau đó in ra màn hình mảng đã nhập kèm theo tổng tất cả các giá trị trong mảng.

Chương trình minh họa:

Console.Write(" Moi ban nhap so dong cua mang: ");
            int Rows = int.Parse(Console.ReadLine());
            Console.Write(" Moi ban nhap so cot cua mang: ");
            int Columns = int.Parse(Console.ReadLine());

            // Tạo 1 mảng 2 chiều với số dòng và số cột đã nhập
            int[,] IntArray = new int[Rows, Columns];
            /* 
             * Duyệt mảng để nhập giá trị cho các phần tử
             * Ở đây mình muốn minh họa cách sử dụng mảng nên mình bỏ qua các bước kiểm tra dữ liệu mà ép kiểu trực tiếp
             * Điều này có thể gây lỗi khi nhập sai nên các bạn hãy cải tiến chương trình này cho đầy đủ nhé!
             */
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    Console.Write(" Moi ban nhap phan tu IntArray[{0}, {1}] = ", i, j);
                    IntArray[i, j] = int.Parse(Console.ReadLine());
                }
            }

            /*
             * In mảng 2 chiều đã nhập ra màn hình
             * Để tính tổng các giá trị trong mảng ta chỉ cần duyệt qua các phần tử và cộng chúng lại với nhau
             * Tận dụng lúc duyệt mảng để in giá trị ta sẽ thực hiện tính tổng luôn để tránh phải duyệt lại mảng thêm lần nữa.
             */
            int Sum = 0;

            Console.WriteLine("\n Mang ban vua nhap la: ");
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    Console.Write(IntArray[i, j] + " ");
                    Sum = Sum + IntArray[i, j];
                }
                // Sau khi in xong mỗi dòng ta thực hiện xuống dòng rồi mới in tiếp
                Console.WriteLine();
            }
            Console.WriteLine(" Tong cac gia tri trong mang: " + Sum);

Kết quả sau khi chạy chương trình trên:

kteam


Kết luận

Nội dung bài này giúp các bạn nắm được:

  • Khai báo, khởi tạo mảng 2 chiều trong C#.
  • Sử dụng mảng 2 chiều trong C#.

Bài sau chúng ta sẽ tìm hiểu về MẢNG NHIỀU CHIỀU TRONG C#.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học mảng hai chiều trong C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Mảng 2 chiều trong C#
palladium88 2018-09-22 16:20:14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            int Row;
            int Column;
            bool OneOrZero;

            Console.Write("Moi ban nhap so hang: ");
            OneOrZero = Int32.TryParse(Console.ReadLine(), out Row);
            if(OneOrZero == false)
            {
                while (OneOrZero == false)
                {
                    Console.Write("Nhap sai du lieu.Moi ban nhap lai so hang:");
                    OneOrZero = Int32.TryParse(Console.ReadLine(), out Row);
                }
            };

            Console.Write("Moi ban nhap so cot: ");
            OneOrZero = Int32.TryParse(Console.ReadLine(), out Column);
            if (OneOrZero == false)
            {
                for (;OneOrZero == false;)
                {
                    Console.Write("Nhap sai du lieu.Moi ban nhap lai so cot:");
                    OneOrZero = Int32.TryParse(Console.ReadLine(), out Column);
                }
            };

            int[,] MyArray = new int [Row,Column];

            {
                int i = 0;
                do
                {
                    int j = 0;
                    do
                    {
                        Console.Write("Nhap gia tri cua phan tu thu [{0},{1}] = ", i, j);
                        OneOrZero = Int32.TryParse(Console.ReadLine(), out MyArray[i, j]);
                        if (OneOrZero == false)
                        {
                            for (; OneOrZero == false;)
                            {
                                Console.Write("Nhap sai du lieu.Moi ban nhap lai:");
                                OneOrZero = Int32.TryParse(Console.ReadLine(), out MyArray[i, j]);
                            }
                        };
                        j++;
                    }
                    while (j < Column);
                    i++;
                }
                while (i < Row);
            }
            int Sum = 0;

            Console.WriteLine("\n Mang ban vua nhap la: ");
            for (int i = 0; i < MyArray.GetLength(0); i++)
            {
                for (int j = 0; j < MyArray.GetLength(1); j++)
                {
                    Console.Write(MyArray[i, j] + "  ");
                    Sum = Sum + MyArray[i, j];
                }
                Console.WriteLine();
            }
            Console.WriteLine(" Tong cac gia tri trong mang: " + Sum);
            Console.ReadKey();
        }
    }
}

 

0 bình chọn
Reply
Mảng 2 chiều trong C#
hieumaster17 2018-04-23 13:25:58

Tạo ma trận với số Random:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            int Rows;
            int Colums;
             Console.WriteLine("Moi ban nham vao so hang");
                while(int.TryParse(Console.ReadLine(), out Rows)==false)
                {
                    Console.WriteLine("SAi rui! Moi ban nhap lai so hang");
                }
              Console.WriteLine("Moi ban nham vao so cot");
                while (int.TryParse(Console.ReadLine(), out Colums) == false)
                {
                    Console.WriteLine("SAi rui! Moi ban nhap lai so cot");
                }
                int[,] Array = new int[Rows, Colums];
                Random rnd = new Random();
                
                
                for (int i = 0; i < Rows; i++)
                {
                   for (int j = 0; j < Colums; j++)
                   {
                      
                        Array[i,j]=rnd.Next(1,100);

               
                     }
                }
                Console.WriteLine("Mang vua nhap la ");
                for (int i = 0; i < Rows; i++)
                {
                    for (int j = 0; j < Colums; j++)
                    {
                        Console.Write("{0,5}  ", Array[i, j]);
                    }
                    Console.WriteLine();
                }
                Console.ReadKey();
                
            
        }
    }
}

 

0 bình chọn
Reply
Mảng 2 chiều trong C#
nguyenchicuongg 2018-04-20 21:05:52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TuHOcConSoleApp
{
    class Program
    {

        static void Main(string[] args)
        { // Chuong trinh nhap xuat mang 
            Console.WriteLine("Moi nhap so dong cua mang: ");
            while ((int.TryParse(Console.ReadLine(), out  row ) == false))
            {
                Console.WriteLine("Nhap so dong ban oi: ");
            }

            Console.WriteLine("Moi nhap so cot cua mang: ");
            while ((int.TryParse(Console.ReadLine(), out  colum1) == false))
            {
                Console.WriteLine("Nhap so cot ban oi: ");
            }
            int[,] Mang1 = new int[row, colum1];

            Console.WriteLine("So dong : {0}\nSo cot  : {1}", row, colum1);

            // nhap mang
            Console.WriteLine("Mot nhap cac Phan tu cua mang :");
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < colum1; j++)
                {
                    Console.Write(" a{0}{1} = ", i, j);
                    while (int.TryParse(Console.ReadLine(), out Mang1[i, j]) == false)
                    {
                        Console.WriteLine("Nhap so ong noi oi!");
                    }
                   
                }
            }

            // xuat mang vua nhap
            Console.WriteLine("Mang vua nhap;");
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < colum1; j++)
                {
                    Console.Write(" {0, 5} ", Mang1[i, j]);
                    Sum += Mang1[i, j];
                }
                Console.WriteLine();
            }
            Console.WriteLine("so phan tu trong mang {0}", Mang1.Length);
            Console.WriteLine("Tong so phan tu trong mang {0}", Sum);
            Console.ReadKey();
            #endregion 
        }
    }
}

 

0 bình chọn
Reply
Mảng 2 chiều trong C#
hoang.ktxd 2018-01-27 21:23:47

Code của mình mọi người tham khảo nhé:

using System;

namespace Array2
{
    class Program
    {
        static void Main(string[] args)
        {
            bool rows;
            bool columns;
            bool table;
            int Rows = 0;
            int Columns = 0;
            do
            {
                Console.Write("Moi ban nhap so dong cua mang:  ");
                rows = int.TryParse(Console.ReadLine(), out int number);
                if (rows == false)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    ClearCurrentConsoleLine();
                }
                else
                {
                    Rows = number;
                }
            }
            while (rows == false);

            do
            {
                Console.Write("Moi ban nhap so cot cua mang:  ");
                columns = int.TryParse(Console.ReadLine(), out int number);
                if (columns == false)
                {
                    Console.SetCursorPosition(0, Console.CursorTop - 1);
                    ClearCurrentConsoleLine();
                }
                else
                {
                    Columns = number;
                }
            }
            while (columns == false);

            int[,] Table = new int[Rows, Columns];

            for (int i = 0; i < Table.GetLength(0); i++)
            {
                for (int j = 0; j < Table.GetLength(1); j++)
                {
                    do
                    {
                        Console.Write("Moi ban nhap phan tu Table[{0}, {1}] = ", i, j);
                        table = int.TryParse(Console.ReadLine(), out int number);
                        if (table == false)
                        {
                            Console.SetCursorPosition(0, Console.CursorTop - 1);
                            ClearCurrentConsoleLine();
                        }
                        else
                        {
                            Table[i, j] = number;
                        }
                    }
                    while (table == false);
                }
            }

            int Sum = 0;
            Console.WriteLine("\nMang ban vua nhap la: ");
            for (int i = 0; i < Table.GetLength(0); i++)
            {
                for (int j = 0; j < Table.GetLength(1); j++)
                {
                    Console.Write("{0,5}", Table[i, j]);
                    Sum = Sum + Table[i, j];
                }
                Console.WriteLine();
            }
            Console.WriteLine("Tong cac gia tri trong mang: {0}", Sum);
            Console.ReadKey();
        }

        public static void ClearCurrentConsoleLine()
        {
            int currentLineCursor = Console.CursorTop;
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, currentLineCursor);
        }
    }
}

 

0 bình chọn
Reply
Mảng 2 chiều trong C#
Lê Khiêm 2017-12-10 22:13:27

Đây là bài làm của mình.
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hello_World
{
    class Program
    {
        static void Main(string[] args)
        {

            int m, n;
            bool isSucess;

            input1:
            Console.Write("Moi ban nhap so dong ");
            isSucess = int.TryParse(Console.ReadLine(), out m);
            if (isSucess == false)
            {
                Console.WriteLine("Ban da nhap gia tri khong hop le vui long nhap lai!");
                goto input1;
            }
            input2:
            Console.Write("Moi ban nhap so cot ");
            isSucess = int.TryParse(Console.ReadLine(), out n);
            if (isSucess == false)
            {
                Console.WriteLine("Ban da nhap gia tri khong hop le vui long nhap lai!");
                goto input2;
            }
            int[,] IntArray = new int[m, n];
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                enter_value:
                    Console.Write("IntArray[{0}, {1}] = ", i, j);
                    isSucess = int.TryParse(Console.ReadLine(), out IntArray[i, j]);
                    if (isSucess == false)
                    {
                    Console.WriteLine("Vui long nhap lai gia tri vua roi!");
                    goto enter_value;
                    }
                }
            }

            Console.WriteLine("Mang ban vua nhap la");

            long sum = 0;

            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    Console.Write("{0, 5}", IntArray[i,j]);
                    sum += IntArray[i, j];
                }
                Console.WriteLine();
            }

            Console.WriteLine("Tong cac gia tri cua mang la {0}", sum);
        }
    }
}

 

0 bình chọn
Reply
Mảng 2 chiều trong C#
Hung Hoang 2017-06-27 17:02:20

em có viết 3 hàm (nhập,xuất,tính tổng) nhưng đến lúc gọi ra thì nó lại báo lỗi .mong mn giúp đỡ ạ.e cảm ơn

static void Main(string[] args)
        {
            int[,] A;
            Nhap(A);
            Xuat(A);
            Sum(A;
            Console.ReadKey();     
        }   

        static void Nhap(int[,] IntArray)
        {
            string soHang, soCot;
            int rows, columns;
            Console.Write("Nhap vao so hang: ");
            soHang = Console.ReadLine();
            Console.Write("Nhap vao so cot: ");
            soCot = Console.ReadLine();
            if (int.TryParse(soHang, out rows) == false || int.TryParse(soCot, out columns) == false)
            {
                Console.WriteLine("Du lieu bi nhap sai - Please try again");
            }
            else
            {
                IntArray = new int[rows, columns];
                for (int i = 0; i < IntArray.GetLength(0); i++)
                {
                    for (int j = 0; j < IntArray.GetLength(1); j++)
                    {
                        Console.Write("Nhap vao phan tu A[{0},{1}] = ");
                        if (int.TryParse(Console.ReadLine(), out IntArray[i, j]))
                        {
                            Console.WriteLine("Du lieu bi nhap sai - Please try again");
                            j--;
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
        static void Sum(int[,] IntArray)
        {
            int Sum = 0;
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    Sum += IntArray[i, j];
                }
            }    
        }
        static void Xuat(int[,] IntArray)
        {
            for (int i = 0; i < IntArray.GetLength(0); i++)
            {
                for (int j = 0; j < IntArray.GetLength(1); j++)
                {
                    Console.Write("{0,5}", IntArray[i, j]);
                }
                Console.WriteLine();
            }
        }

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Minh Kỳ 2018-03-22 14:17:04
Chỗ hàm Main Sum A thíu dấu đóng ngoặc
0 bình chọn
Reply
Mảng 2 chiều trong C#
caovy2001 2017-06-24 22:49:04

Ad xem code của em thế này được chưa ạ, có cách nào làm gọn code hơn không.
VẼ HÌNH TAM GIÁC:

static void Main(string[] args)
        {
            char[,] Mang = new char[10, 20];

            Mang[1, 10] =
            Mang[2, 9] = Mang[2, 11] =
            Mang[3, 8] = Mang[3, 12] =
            Mang[4, 7] = Mang[4, 13] =
            Mang[5, 6] =  Mang[5,8] =  Mang[5,10] = Mang[5,12] =  Mang[5, 14] = '*';

            for (int i = 0; i < Mang.GetLength(0); i++)
            {
                for (int j = 0; j < Mang.GetLength(1); j++)
                {
                    Console.Write(Mang[i,j]);
                }
                Console.WriteLine();
            }
                Console.ReadKey();
        }

0 bình chọn
Reply
Mảng 2 chiều trong C#
caovy2001 2017-06-24 22:24:31

static void Main(string[] args)
        {
        Buoc1:
            int Tong = 0;
            Console.Write("Nhap so Dong: ");
            int Dong;
            bool KtrDong = int.TryParse(Console.ReadLine(), out Dong);
            Console.Write("Nhap so Cot: ");
            int Cot;
            bool KtrCot = int.TryParse(Console.ReadLine(), out Cot);
            if (KtrDong == false || KtrCot == false)
            {
                Console.WriteLine("Nhap du lieu sai.");
                Console.ReadKey();
                goto Buoc1;
            }
            else
            {
                int[,] Mang = new int[Dong, Cot];
                for (int i = 0; i < Dong; i++)
                {
                    for (int j = 0; j < Cot; j++)
                    {
                        Mang[i, j] = int.Parse(Console.ReadLine());
                    }
                    Console.WriteLine();
                }

                Console.WriteLine("Mang la:");
                for (int i = 0; i < Dong; i++)
                {
                    for (int j = 0; j < Cot; j++)
                    {
                        Console.Write("{0,5}",Mang[i,j]);
                        Tong = Tong + Mang[i, j];
                    }
                    Console.WriteLine();
                }
                Console.Write("Tong la: " + Tong);

            }
                

            Console.ReadKey();
        }

1 bình chọn
Reply
Mảng 2 chiều trong C#
V.Nhật 2016-10-16 09:02:22
Mong AD tiết tục ra bài mới .
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education