Mảng hai chiều

0
4046

Mảng hai chiều (còn gọi là ma trận) thực chất là mảng một chiều trong đó mỗi phần tử của mảng là một mảng một chiều, và được …

Định nghĩa

Mảng hai chiều (còn gọi là ma trận) thực chất là mảng một chiều trong đó mỗi phần tử của mảng là một mảng một chiều, và được truy xuất bởi hai chỉ số dòng và cột.

image002

Cú pháp

image003
image004

Lưu ý: Chỉ số cột và chỉ số dòng luôn luôn bắt đầu từ 0.
Ví dụ:

  1. Khai báo mảng 2 chiều a có 3 dòng 2 cột chứa số nguyên: int a[3][2];
  2.  Khai báo mảng 2 chiều ch có 50 dòng 100 cột chứa ký tự:char ch[50][100];

Truy xuất đến một phần tử

Thông qua chỉ số
<tên biến mảng>[<giá trị cs1>][<giá trị cs2>]

Ví dụ: Cho ma trận int A[3][4]; như sau:

image006

Các truy xuất
Hợp lệ: a[0][0],  a[0][1], …, a[2][2], a[2][3]
Không hợp lệ: a[-1][0], a[2][4], a[3][3]

Gán dữ liệu kiểu mảng

Không được sử dụng phép gán thông thường mà phải gán trực tiếp giữa các phần tử

image007

Tham số mảng của một hàm

image009

Qui ước: chúng ta thống nhất dùng Ma trận thay cho Mảng 2 chiều.

Bài tập mẫu hướng dẫn

Bài 1: Viết chương trình nhập các giá trị cho ma trận chứa các số nguyên, sau đó xuất mảng vừa nhập (Lưu ý: Viết chương trình dạng hàm).

Yêu cầu:

  • Viết 2 hàm con Nhập và Xuất ma trận chứa các số nguyên.
  • Gọi thực hiện 2 hàm con trong hàm main.

Hướng dẫn:
Bước 1: Tạo project mới (có thể xem lại bài viết Hướng dẫn Tạo Project Visual C++ trong Visual Studio 2012 Hoặc Hướng dẫn Dev-C++ căn bản)
Bước 2: Khai báo thêm các thư viện cơ bản cho chương trình.

#include <conio.h>
#include <stdio.h>

Bước 3: Khai báo hằng số cho chương trình.

#define MAXROW 100
#define MAXCOL 100

Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:

void NhapMaTran_SoNguyen(int a[][MAXCOL], int &m, int &n);
void XuatMaTran_SoNguyen(int a[][MAXCOL], int m, int n);

Bước 5: Viết hàm main để thực thi chương trình.

void main()
{
	int A[MAXROW][MAXCOL];
	int M, N;
	NhapMaTran_SoNguyen(A, M, N);
	printf("\nNoi dung cua mang la: \n");
	XuatMaTran_SoNguyen(A, M, N);
	getch();
}

Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau

//=======================================
void NhapMaTran_SoNguyen(int a[][MAXCOL], int &m, int &n)
{
	do
	{
		printf("Cho biet so dong cua mang: ");
		scanf_s("%d", &m);
	}while(m<=0);
	do
	{
		printf("Cho biet so cot cua mang: ");
		scanf_s("%d", &n);
	}while(n<=0);
	for(int i=0; i<m; i++)
		for(int j=0; j<n; j++)
		{
			printf("Gia tri phan tu a[%d][%d]=", i, j);
			scanf_s("%d", &a[i][j]);
		}
}
//==========================================
void XuatMaTran_SoNguyen(int a[][MAXCOL], int m, int n)
{
	for(int i=0; i<m; i++)
	{
		for(int j=0; j<n; j++)
			printf("%5d", a[i][j]);
		printf("\n");
	}
}
Bài 2: Cho ma trận chứa các số nguyên. Viết chương trình thực hiện các thao tác sau (Lưu ý: Viết chương trình dạng hàm)
– Tạo giá trị ngẫu nhiên cho các phần tử của ma trận.
– Xuất các giá trị của ma trận ra màn hình.
– Tính và xuất tổng các phần tử ma trận.
– Tìm max/min của các phần tử ma trận.
– Sắp xếp các giá trị của ma trận theo thứ tự tăng dần.

Hướng dẫn(xem tiếp ở trang sau)

This site uses Akismet to reduce spam. Learn how your comment data is processed.