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>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
Bước 3: Khai báo hằng số cho chương trình.
#define MAXROW 100 //số dòng tối đa
#define MAXCOL 100 //số cột tối đa
#define MAXCOL 100 //số cột tối đa
Bước 4: Viết các khai báo nguyên mẫu hàm cho chương trình như sau:
void TaoMaTran_SoNguyen(int a[][MAXCOL], int &m, int &n);
void XuatMaTran_SoNguyen(int a[][MAXCOL], int m, int n);
int TongMaTran(int a[][MAXCOL], int m, int n);
int MaxMaTran(int a[][MAXCOL], int m, int n);
int MinMaTran(int a[][MAXCOL], int m, int n);
void SapXepMaTranTang(int a[][MAXCOL], int m, int n);
void XuatMaTran_SoNguyen(int a[][MAXCOL], int m, int n);
int TongMaTran(int a[][MAXCOL], int m, int n);
int MaxMaTran(int a[][MAXCOL], int m, int n);
int MinMaTran(int a[][MAXCOL], int m, int n);
void SapXepMaTranTang(int a[][MAXCOL], int m, int n);
Bước 5: Viết hàm main để thực thi chương trình.
//===========================================
void Menu()
{
printf("\n************************************************");
printf("\n* MENU *");
printf("\n*----------------------------------------------*");
printf("\n* 1. Khoi tao ma tran *");
printf("\n* 2. Xuat noi dung cua ma tran *");
printf("\n* 3. Tong gia tri cac phan tu cua ma tran *");
printf("\n* 4. Gia tri phan tu lon nhat, nho nhat *");
printf("\n* 5. Sap xep ma tran tang dan *");
printf("\n* 0. Thoat chuong trinh *");
printf("\n************************************************");
}
//=========================================
void Process()
{
int A[MAXROW][MAXCOL];
int M, N;
int PhimChon,Sum, Max, Min;
do
{
Menu();
printf("\nHay chon mot chuc nang cua chuong trinh: ");
scanf_s("%d", &PhimChon);
switch(PhimChon)
{
case 1:
TaoMaTran_SoNguyen(A, M, N);
printf("\nNoi dung cua ma tran vua tao la: \n");
XuatMaTran_SoNguyen(A, M, N);
break;
case 2:
printf("\nNoi dung cua ma tran la: \n");
XuatMaTran_SoNguyen(A, M, N);
break;
case 3:
Sum=TongMaTran(A, M, N);
printf("\nTong gia tri cac phan tu cua ma tran: %d", Sum);
break;
case 4:
Max=MaxMaTran(A, M, N);
Min=MaxMaTran(A, M, N);
printf("\nGia tri phan tu lon nhat cua ma tran: %d", Max);
printf("\nGia tri phan tu nho nhat cua ma tran: %d", Min);
break;
case 5:
SapXepMaTranTang(A, M, N);
printf("\nNoi dung cua ma tran sau khi sap xep tang la: \n");
XuatMaTran_SoNguyen(A, M, N);
break;
case 0: exit(1);
}
}while(1);
}
//==========================================
//Phần hàm main
void main()
{
Process();
}
Bước 6: Viết các định nghĩa hàm cần thiết cho chương trình như sau
//=============================================
void TaoMaTran_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);
srand((unsigned)time(NULL));
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
a[i][j]= (rand()%199)-99;
}
//============================================
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");
}
}
//==============================================
int TongMaTran(int a[][MAXCOL], int m, int n)
{
int sum=0;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
sum+=a[i][j];
return sum;
}
//===========================================
int MaxMaTran(int a[][MAXCOL], int m, int n)
{
int max=a[0][0];
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
if(max<a[i][j])
max=a[i][j];
return max;
}
//=============================================
int MinMaTran(int a[][MAXCOL], int m, int n)
{
int min=a[0][0];
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
if(min>a[i][j])
min=a[i][j];
return min;
}
//================================================
void HoanVi(int &x, int &y)
{
int temp=x;
x=y;
y=temp;
}
//========================================
void SapXepMaTranTang(int a[][MAXCOL], int m, int n)
{
int sopt=m*n;
for(int i=0; i<sopt-1; i++)
for(int j=i+1; j<sopt; j++)
if(a[i/n][i%n]>a[j/n][j%n])
HoanVi(a[i/n][i%n], a[j/n][j%n]);
}
Bài tập làm thêm
Cho một ma trận chứa các số nguyên. Viết một chương trình (dạng menu) thực hiện các yêu cầu sau:
- Tạo ngẫu nhiên giá trị cho các phần tử của ma trận.
- Xuất giá trị các phần tử của ma trận ra màn hình.
- Tìm số chẵn lớn nhất trong ma trận.
- Tìm số nguyên tố nhỏ nhất trong ma trận.
- Tìm vị trí của giá trị x trong ma trận, x nhập từ phím.
- Tìm max của dòng k trong ma trận.
- Đếm phần tử dương trong ma trận.
- Đếm số lần phần tử x xuất hiện trong ma trận.
- Kiểm tra ma trận có vuông không?
- Kiểm tra ma trận có toàn là số chẵn không?
- Xuất các phần tử trên đường chéo chính.
- Xuất các phần tử trên đường chéo phụ
- Xuất các phần tử thuộc tam giác trên.
- Xuất các phần tử thuộc tam giác dưới.
- Xuất các cột có tổng lớn nhất trong ma trận.
- Xuất các dòng có tổng nhỏ nhất trong ma trận.
- Tính tổng các phần tử trên đường chéo chính.
- Tính tổng các phần tử chẵn thuộc tam giác trên.
- Tính tổng các phần tử lẻ thuộc tam giác dưới.
- Đếm số phần tử cực đại trong ma trận. biết phần tử cực đại là phần tử lớn hơn các phần tử xung quanh nó.
Lưu ý: các câu k, l, m, n, q, r, s thì ma trận phải là ma trận vuông. Nên nếu M¹N thì K=min(M,N) khi đó ta chỉ tính cho ma trận với K dòng ´ K cột đầu tiên.






![[ASP.NET Core MVC] – Hướng dẫn tạo View p3](https://sinhvientot.net/wp-content/uploads/2019/01/Bitmap-MEDIUM_ASP.NET-Core-MVC-Logo_2colors_Square_Boxed_RGB-218x150.png)


















