Nhập xuất mảng 2 chiều trong C/C++

Nhập xuất mảng 2 chiều

Nhập xuất mảng 2 chiều là bài toán đầu tiên mà các bạn cần giải quyết khi học tới phần kiến thức về mảng nhiều chiều. Với nhiều bạn mới học, việc nhập xuất mảng 2 chiều đôi khi gặp nhiều khó khăn. Đó cũng là lý do mình viết bài hướng dẫn và giải thích cho các bạn về nhập xuất mảng 2 chiều trong C/C++.

1. Giải thích về mảng 2 chiều

Bài này yêu cầu tối thiểu với bạn đọc là phải biết về mảng 1 chiều rồi. Mình sẽ giải thích thông qua kiến thức mảng một chiều nhé.

Nếu bạn chưa biết nhập xuất mảng một chiều, hãy quay lại đọc bài cách nhập xuất mảng 1 chiều nhé.

Các bạn có thể hình dung, mảng hai chiều giống như một bảng trong word/excel. Như này nè:

(0, 0)(0, 1)(0, 2)
(1, 0)(1, 1)(1, 2)
(2, 0)(2, 1)(2, 1)

Như bạn thấy, về góc nhìn trực quan thì nó có 2 chiều từ trên xuống, và từ trái sang. Mỗi một hàng sẽ là một mảng 1 chiều. Và mảng hai chiều được cấu tạo từ nhiều mảng 1 chiều. Như vậy, thực chất việc nhập xuất mảng 2 chiều chỉ là việc lặp lại nhiều lần việc nhập xuất mảng 1 chiều.

Tại sao lại là góc nhìn trực quan? Vì trên bộ nhớ, cách tổ chức lưu trữ mảng 2 chiều vẫn giống hệt mảng 1 chiều, là một dãy ô nhớ liên tiếp mà thôi.

Như vậy, mô hình chung của chúng ta sẽ là:

Giả sử mảng hai chiều chúng ta khai báo như sau:  int a[100][100]

Vậy làm sao để chúng ta lấy mảng 1 chiều đầu tiên? Mảng 1 chiều đầu tiên có chỉ số hàng là 0; Do đó đáp án là a[0].

Vậy lấy phần tử đầu tiên của mảng một chiều đầu tiên thì sao? Đơn giản, thì gọi bằng cách tên_mảng[chỉ_số] thôi; Khi đó đáp án sẽ là a[0][0]. Tương tự, phần tử thứ 2 của mảng 1 chiều thứ 3 là a[2][1].

2. Bài tập nhập xuất mảng 2 chiều trong C/C++

Nhập xuất mảng 2 chiều không dùng hàm

BT1. Nhập vào ma trận có kích thước m x n. Hiển thị ma trận vừa nhập ra màn hình dưới dạng bảng.

Lời giải:


Nhập xuất mảng 2 chiều dùng hàm con

BT2. Nhập xuất ma trận sử dụng hàm con. Yêu cầu có hàm nhập ma trận và hàm xuất ma trận.

Lời giải:

Hi vọng bài chia sẻ này cung cấp cho các bạn nhiều kiến thức bổ ích. Chúc các bạn có những giây phút học tập thú vị tại nguyenvanhieu.vn!

avatar
  Subscribe  
newest oldest most voted
Notify of
Nguyen Hai
Guest
Nguyen Hai

Anh ơi e xin góp ý 1 chút ạ. Như anh nói, thì: Mảng 2 chiều là có các hàng chính là các mảng 1 chiều, vậy thì cái đoạn mảng 1 chiều phải là: for(int i = 0; i < số_cột; i++){ // nhập vào mảng 1 chiều } anh ạ.

Nguyen Hai
Guest
Nguyen Hai

Em lấy ví dụ: với m(độ dài cột) = 2, n(độ dài hàng) = 3 => khi duyệt từ 0->(m-1) && 0->(n-1). Nó sẽ cho phép mình nhập từ cột -> cột -> cột, rồi tiếp tục nhập hàng->hàng->hàng, in ra cũng tương tự như thế.
Input:
2 4 6 8 9 10
Output:
2 4 6
8 9 10

duc
Guest
duc

nhập mảng char 2 chiều kiểu gì ạ

jenywang
Guest
jenywang

Ad ơi! em có làm cái đồ án nó liên quan đến thành phần liên thông như kiểu ra trận, rồi xác định miền của nó mỗi ô có giá trị giống nhau và nối tiếp là một miền thì làm sao ạ. Mong ad giúp dùm e cảm ơn ạ!!1