8. VCVC
&&
BBBB
88
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畛
V鱈 d畛
NMLT - M畉ng hai chi畛u
int a[5][10], b[5][10];
b = a; // Sai
int i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 10; j++)
b[i][j] = a[i][j];
9. VCVC
&&
BBBB
99
Truy畛n m畉ng cho hm
Truy畛n m畉ng cho hm
Tham s畛 ki畛u m畉ng trong khai b叩o hm gi畛ng
nh動 khai b叩o bi畉n m畉ng
Tham s畛 ki畛u m畉ng truy畛n cho hm ch鱈nh l 畛a
ch畛 c畛a ph畉n t畛 畉u ti棚n c畛a m畉ng
C坦 th畛 b畛 s畛 l動畛ng ph畉n t畛 chi畛u th畛 2 ho畉c con tr畛.
M畉ng c坦 th畛 thay 畛i n畛i dung sau khi th畛c hi畛n hm.
NMLT - M畉ng hai chi畛u
void NhapMaTran(int a[50][100]);
void NhapMaTran(int a[][100]);
void NhapMaTran(int (*a)[100]);
10. VCVC
&&
BBBB
1010
Truy畛n m畉ng cho hm
Truy畛n m畉ng cho hm
S畛 l動畛ng ph畉n t畛 th畛c s畛 truy畛n qua bi畉n kh叩c
L畛i g畛i hm
NMLT - M畉ng hai chi畛u
void XuatMaTran(int a[50][100], int m, int n);
void XuatMaTran(int a[][100], int m, int n);
void XuatMaTran(int (*a)[100], int m, int n);
void NhapMaTran(int a[][100], int &m, int &n);
void XuatMaTran(int a[][100], int m, int n);
void main()
{
int a[50][100], m, n;
NhapMaTran(a, m, n);
XuatMaTran(a, m, n);
}
11. VCVC
&&
BBBB
1111
M畛t s畛 bi to叩n c董 b畉n
Vi畉t ch動董ng tr狸nh con th畛c hi畛n c叩c y棚u c畉u sau
Nh畉p m畉ng
Xu畉t m畉ng
T狸m ki畉m m畛t ph畉n t畛 trong m畉ng
Ki畛m tra t鱈nh ch畉t c畛a m畉ng
T鱈nh t畛ng c叩c ph畉n t畛 tr棚n d嘆ng/c畛t/ton ma
tr畉n/動畛ng ch辿o ch鱈nh/n畛a tr棚n/n畛a d動畛i
T狸m gi叩 tr畛 nh畛 nh畉t/l畛n nh畉t c畛a m畉ng
NMLT - M畉ng hai chi畛u
12. VCVC
&&
BBBB
1212
M畛t s畛 quy 動畛c
Ki畛u d畛 li畛u
C叩c ch動董ng tr狸nh con
Hm void HoanVi(int x, int y): ho叩n v畛 gi叩 tr畛
c畛a hai s畛 nguy棚n.
Hm int LaSNT(int n): ki畛m tra m畛t s畛 c坦 ph畉i
l s畛 nguy棚n t畛. Tr畉 v畛 1 n畉u n l s畛 nguy棚n
t畛, ng動畛c l畉i tr畉 v畛 0.
NMLT - M畉ng hai chi畛u
#define MAXD 50
#define MAXC 100
14. VCVC
&&
BBBB
1414
Nh畉p Ma Tr畉n
Y棚u c畉u
Cho ph辿p nh畉p m畉ng a, m d嘆ng, n c畛t
驚 t動畛ng
Cho tr動畛c m畛t m畉ng 2 chi畛u c坦 d嘆ng t畛i a l MAXD,
s畛 c畛t t畛i a l MAXC.
Nh畉p s畛 l動畛ng ph畉n t畛 th畛c s畛 m, n c畛a m畛i chi畛u.
Nh畉p t畛ng ph畉n t畛 t畛 [0][0] 畉n [m-1][n-1].
NMLT - M畉ng hai chi畛u
15. VCVC
&&
BBBB
1515
Hm Nh畉p Ma Tr畉n
NMLT - M畉ng hai chi畛u
void NhapMaTran(int a[][MAXC], int &m, int &n)
{
printf(Nhap so dong, so cot cua ma tran: );
scanf(%d%d, &m, &n);
int i, j;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
printf(Nhap a[%d][%d]: , i, j);
scanf(%d, &a[i][j]);
}
}
16. VCVC
&&
BBBB
1616
Xu畉t Ma Tr畉n
Y棚u c畉u
Cho ph辿p nh畉p m畉ng a, m d嘆ng, n c畛t
驚 t動畛ng
Xu畉t gi叩 tr畛 t畛ng ph畉n t畛 c畛a m畉ng 2 chi畛u t畛 d嘆ng
c坦 0 畉n d嘆ng m-1, m畛i d嘆ng xu畉t gi叩 gi叩 tr畛 c畛a c畛t 0
畉n c畛t n-1 tr棚n d嘆ng 坦.
NMLT - M畉ng hai chi畛u
17. VCVC
&&
BBBB
1717
Hm Xu畉t Ma Tr畉n
NMLT - M畉ng hai chi畛u
void XuatMaTran(int a[][MAXC], int m, int n)
{
int i, j;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
printf(%d , a[i][j]);
printf(n);
}
}
18. VCVC
&&
BBBB
1818
T狸m ki畉m m畛t ph畉n t畛 trong Ma Tr畉n
Y棚u c畉u
T狸m xem ph畉n t畛 x c坦 n畉m trong ma tr畉n a k鱈ch
th動畛c mxn hay kh担ng?
驚 t動畛ng
Duy畛t t畛ng ph畉n c畛a ma tr畉n a. N畉u ph畉n t畛 ang
x辿t b畉ng x th狸 tr畉 v畛 c坦 (1), ng動畛c l畉i tr畉 v畛 kh担ng c坦
(0).
NMLT - M畉ng hai chi畛u
19. VCVC
&&
BBBB
1919
Hm T狸m Ki畉m
NMLT - M畉ng hai chi畛u
int TimKiem(int a[][MAXC], int m, int n, int x)
{
int i, j;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (a[i][j] == x)
return 1;
return 0;
}
20. VCVC
&&
BBBB
2020
Ki畛m tra t鱈nh ch畉t c畛a m畉ng
Y棚u c畉u
Cho tr動畛c ma tr畉n a k鱈ch th動畛c mxn. Ma tr畉n a c坦
ph畉i l ma tr畉nton c叩c s畛 nguy棚n t畛 hay kh担ng?
驚 t動畛ng
C叩ch 1: 畉m s畛 l動畛ng s畛 ngt畛 c畛a ma tr畉n. N畉u s畛
l動畛ng ny b畉ng 炭ng mxn th狸 ma tr畉n ton ngt畛.
C叩ch 2: 畉m s畛 l動畛ng s畛 kh担ng ph畉i ngt畛 c畛a ma
tr畉n. N畉u s畛 l動畛ng ny b畉ng 0 th狸 ma tr畉n ton ngt畛.
C叩ch 3: T狸m xem c坦 ph畉n t畛 no kh担ng ph畉i s畛 ngt畛
kh担ng. N畉u c坦 th狸 ma tr畉n kh担ng ton s畛 ngt畛.
NMLT - M畉ng hai chi畛u
21. VCVC
&&
BBBB
2121
Hm Ki畛m Tra (C叩ch 1)
NMLT - M畉ng hai chi畛u
int KiemTra_C1(int a[][MAXC], int m, int n)
{
int i, j, dem = 0;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (LaSNT(a[i][j]==1)
dem++;
if (dem == m*n)
return 1;
return 0;
}
22. VCVC
&&
BBBB
2222
Hm Ki畛m Tra (C叩ch 2)
NMLT - M畉ng hai chi畛u
int KiemTra_C2(int a[][MAXC], int m, int n)
{
int i, j, dem = 0;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (LaSNT(a[i][j]==0)
dem++;
if (dem == 0)
return 1;
return 0;
}
23. VCVC
&&
BBBB
2323
Hm Ki畛m Tra (C叩ch 2)
NMLT - M畉ng hai chi畛u
int KiemTra_C3(int a[][MAXC], int m, int n)
{
int i, j, dem = 0;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (LaSNT(a[i][j]==0)
return 0;
return 1;
}
24. VCVC
&&
BBBB
2424
T鱈nh t畛ng c叩c ph畉n t畛
Y棚u c畉u
Cho tr動畛c ma tr畉n a, k鱈ch th動畛c mxn. T鱈nh t畛ng c叩c
ph畉n t畛 tr棚n:
D嘆ng d, c畛t c
動畛ng ch辿o ch鱈nh, 動畛ng ch辿o ph畛 (ma tr畉n vu担ng)
N畛a tr棚n/d動畛i 動畛ng ch辿o ch鱈nh (ma tr畉n vu担ng)
N畛a tr棚n/d動畛i 動畛ng ch辿o ph畛 (ma tr畉n vu担ng)
驚 t動畛ng
Duy畛t ma tr畉n v c畛ng d畛n c叩c ph畉n t畛 c坦 t畛a 畛 (d嘆ng,
c畛t) th畛a y棚u c畉u.
NMLT - M畉ng hai chi畛u
25. VCVC
&&
BBBB
2525
Hm t鱈nh t畛ng tr棚n d嘆ng
NMLT - M畉ng hai chi畛u
int TongDong(int a[][MAXC], int m, int n, int d)
{
int j, tong;
tong = 0;
for (j=0; j<n; j++) // Duy畛t c叩c c畛t
tong = tong + a[d][j];
return tong;
}
26. VCVC
&&
BBBB
2626
Hm t鱈nh t畛ng tr棚n c畛t
NMLT - M畉ng hai chi畛u
int TongCot(int a[][MAXC], int m, int c)
{
int i, tong;
tong = 0;
for (i=0; i<m; i++) // Duy畛t c叩c d嘆ng
tong = tong + a[i][c];
return tong;
}
27. VCVC
&&
BBBB
2727
Hm t鱈nh t畛ng 動畛ng ch辿o ch鱈nh
NMLT - M畉ng hai chi畛u
int TongDCChinh(int a[][MAXC], int n)
{
int i, tong;
tong = 0;
for (i=0; i<n; i++)
tong = tong + a[i][i];
return tong;
}
28. VCVC
&&
BBBB
2828
Hm t鱈nh t畛ng tr棚n 動畛ng ch辿o ch鱈nh
NMLT - M畉ng hai chi畛u
int TongTrenDCChinh(int a[][MAXC], int n)
{
int i, j, tong;
tong = 0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (i < j)
tong = tong + a[i][j];
return tong;
}
29. VCVC
&&
BBBB
2929
Hm t鱈nh t畛ng d動畛i 動畛ng ch辿o ch鱈nh
NMLT - M畉ng hai chi畛u
int TongTrenDCChinh(int a[][MAXC], int n)
{
int i, j, tong;
tong = 0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (i > j)
tong = tong + a[i][j];
return tong;
}
30. VCVC
&&
BBBB
3030
Hm t鱈nh t畛ng tr棚n 動畛ng ch辿o ph畛
NMLT - M畉ng hai chi畛u
int TongDCPhu(int a[][MAXC], int n)
{
int i, tong;
tong = 0;
for (i=0; i<n; i++)
tong = tong + a[i][n-i-1];
return tong;
}
31. VCVC
&&
BBBB
3131
T狸m gi叩 tr畛 l畛n nh畉t c畛a Ma Tr畉n
Y棚u c畉u
Cho tr動畛c ma tr畉n a, k鱈ch th動畛c mxn. T狸m gi叩 tr畛 l畛n
nh畉t trong ma tr畉n a (g畛i l max)
驚 t動畛ng
Gi畉 s畛 gi叩 tr畛 max hi畛n t畉i l gi叩 tr畛 ph畉n t畛 畉u ti棚n a[0]
[0]
L畉n l動畛t ki畛m tra c叩c ph畉n t畛 c嘆n l畉i 畛 c畉p nh畉t max.
NMLT - M畉ng hai chi畛u
32. VCVC
&&
BBBB
3232
Hm t狸m Max
NMLT - M畉ng hai chi畛u
int TimMax(int a[][MAXC], int m, int n)
{
int i, j, max;
max = a[0][0];
for (i=0; i<m; i++)
for (j=0; j<n; j++)
if (a[i][j] > max)
max = a[i][j];
return max;
}