Bài giảng Kỹ thuật lập trình nâng cao - Chương 3: Ma trận cung cấp cho người học các kiến thức: Định nghĩa kiểu dữ liệu, truy suất, ma trận vuông, nhập xuất ma trận số nguyên. Cuối bài giảng có phần bài tập để người học ôn tập và củng cố kiến thức.
Trang 1TRẦN MINH THÁI
1
Trang 2Cách 1: Con trỏ hằng
< KDL> < Tên mảng >[< Số dòng tối đa>][<Số cột tối đa>];
*Ví dụ:
int A[10][10]; //Khai báo ma trận kiểu int gồm 10 dòng, 10 cột float b[10][10];//Khai báo ma trận kiểu float gồm 10 dòng 10 cột
Cách 2 : Con trỏ
< Kiểu dữ liệu > **<Tên mảng>;
*Ví dụ :
int **A ; // Khai báo ma trận kiểu int
Trang 3Để đơn giản trong việc khai báo ma trận:
#define MAX 100
typedef <kiểu dữ liệu> matran[MAX][MAX];
Ví dụ: Khai báo ma trận các số nguyên a
#define MAX 100
typedef int matran[MAX][MAX];
matran a;
Trang 4Để truy xuất các thành phần của mảng hai chiều ta phải dựa vào chỉ số dòng và chỉ số cột.
Cú pháp: tên_ma_trận[chỉ số dòng][chỉ số cột]
*Ví dụ: int A[3][4] = { {2,3,9,4} , {5,6,7,6} , {2,9,4,7} };
Với các khai báo như trên ta có:
A[0][0] = 2; A[0][1] = 3;
A[1][1] = 6; A[1][3] = 6;
Trang 5*Ma trận có số dòng và số cột bằng nhau
*Đường chéo chính: chỉ số dòng = chỉ số cột
*Đường chéo phụ: chỉ số cột + chỉ số dòng = kích thước - 1
5
Trang 6*Nhập/ xuất
*Tìm kiếm
*Đếm
*Tính tổng/ trung bình
*Sắp xếp dòng/ cột
*Xóa dòng/ cột
*Chèn thêm dòng/ cột
Trang 7Khai báo
#define MAX 100
typedef int matran[MAX][MAX];
void NhapMT(matran a, int sd, int sc); void XuatMT(matran a, int sd, int sc);
Trang 8void NhapMT(matran a, int sd, int sc)
{
for(int i=0; i<sd; i++) {
for(int j=0; j<sc; j++) {
cout<<"Nhap gt ["<<i<<"]["<<j<<"]: "; cin>>a[i][j];
}
Trang 9*
void XuatMT(matran a, int sd, int sc) {
for(int i=0; i<sd; i++)
{
for(int j=0; j<sc; j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
}
Trang 10void main()
{
matran a;
int sd, sc;
cout<<"Nhap so dong cua ma tran: "; cin>>sd;
cout<<"Nhap so cot cua ma tran: "; cin>>sc;
NhapMT(a, sd, sc);
XuatMT(a, sd, sc);
Trang 11*
Cho ma trận số nguyên a, viết các hàm:
*Xuất các phần tử lẻ
*Xuất các phần tử là số nguyên tố
*Xuất các phần tử có giá trị lớn hơn x
Trang 12Cho ma trận vuông số nguyên kích thước n, viết các hàm:
*Nhập ma trận
*Xuất ma trận
*Xuất các phần tử thuộc đường chéo chính
*Xuất các phần tử thuộc đường chéo phụ
*Xuất các phần tử thuộc phần tam giác phía dưới của đường chéo chính
*Xuất các phần tử thuộc phần tam giác phía trên
Trang 13*
Cho ma trận số nguyên, viết các hàm:
*Tìm phần tử lớn nhất
*Tìm vị trí phần tử lớn nhất
*Tìm vị trí xuất hiện đầu tiên của phần tử có giá trị x
*Tìm dòng có tổng lớn nhất
*Tìm cột có giá trị nhỏ nhất
Trang 14Cho ma trận số nguyên, viết các hàm:
*Xóa dòng có chứa giá trị lớn nhất
*Xóa cột có chứa giá trị x