Professional Documents
Culture Documents
NMLT C11 Mang1Chieu
NMLT C11 Mang1Chieu
NHP MN LP TRNH
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn
MNG MT CHIU
1
&
VC
BB
Ni dung
1 Khi nim
2 Khai bo
Mng mt chiu
2
&
VC
BB
t vn
V d
Chng trnh cn lu tr 3 s nguyn?
=> Khai bo 3 bin int a1, a2, a3;
Chng trnh cn lu tr 100 s nguyn?
=> Khai bo 100 bin kiu s nguyn!
Ngi dng mun nhp n s nguyn?
=> Khng thc hin c!
Gii php
Kiu d liu mi cho php lu tr mt dy
cc s nguyn v d dng truy xut. 3
Mng mt chiu
&
VC
BB
D liu kiu mng
Khi nim
L mt kiu d liu c cu trc do ngi lp
trnh nh ngha.
Biu din mt dy cc bin c cng kiu. V
d: dy cc s nguyn, dy cc k t
Kch thc c xc nh ngay khi khai bo
v khng bao gi thay i.
NNLT C lun ch nh mt khi nh lin tc
cho mt bin kiu mng.
Mng mt chiu
4
&
VC
BB
Khai bo bin mng (tng minh)
Tng minh
<kiu c s> <tn bin mng>[<s phn t>];
<kiu c s> <tn bin mng>[<N1>][<N2>][<Nn>];
V d
int Mang1Chieu[10];
0 1 2 3 4 5 6 7 8 9
Mang1Chieu
int Mang2Chieu[3][4];
0 1 2 3 4 5 6 7 8 9 10 11
Mang2Chieu 0
1
2
Mng mt chiu
6
&
VC
BB
Khai bo bin mng (k tng minh)
C php
Khng tng minh (thng qua khai bo kiu)
typedef <kiu c s> <tn kiu mng>[<s phn t>];
typedef <kiu c s> <tn kiu mng>[<N1>][<Nn>];
V d
typedef int Mang1Chieu[10];
typedef int Mang2Chieu[3][4];
Mng mt chiu
8
&
VC
BB
Khi to gi tr cho mng lc khai bo
Gm cc cch sau
Khi to gi tr cho mi phn t ca mng
int a[4] = {2912, 1706, 1506, 1904};
0 1 2 3
0 1 2 3
a 2912 1706 0 0
Mng mt chiu
9
&
VC
BB
Khi to gi tr cho mng lc khai bo
Gm cc cch sau
Khi to gi tr 0 cho mi phn t ca mng
int a[4] = {0};
0 1 2 3
a 0 0 0 0
T ng xc nh s lng phn t
int a[] = {2912, 1706, 1506, 1904};
0 1 2 3
a 2912 1706 1506 1904
Mng mt chiu
10
&
VC
BB
Truy xut n mt phn t
Thng qua ch s
<tn bin mng>[<gt cs1>][<gt cs2>][<gt csn>]
V d
Cho mng nh sau 0 1 2 3
int a[4];
Cc truy xut
Hp l: a[0], a[1], a[2], a[3]
Khng hp l: a[-1], a[4], a[5],
=> Cho kt thng khng nh mong mun!
Mng mt chiu
11
&
VC
BB
Gn d liu kiu mng
V d
#define MAX 3
typedef int MangSo[MAX];
MangSo a = {1, 2, 3}, b;
b = a; // Sai
for (int i = 0; i < 3; i++) b[i] = a[i];
Mng mt chiu
12
&
VC
BB
Mt s li thng gp
Mng mt chiu
13
&
VC
BB
Truyn mng cho hm
Mng mt chiu
14
&
VC
BB
Truyn mng cho hm
S lng phn t
#define MAX 100
Cc hm
Hm void HoanVi(int &x, int &y): hon v gi tr
ca hai s nguyn.
Hm int LaSNT(int n): kim tra mt s c phi
l s nguyn t. Tr v 1 nu n l s nguyn
t, ngc li tr v 0.
Mng mt chiu
17
&
VC
BB
Th tc HoanVi & Hm LaSNT
int LaSNT(int n)
{
int i, dem = 0;
for (i = 1; i <= n; i++)
if (n % i == 0)
dem++;
if (dem == 2)
return 1;
else return 0;
}
Mng mt chiu
18
&
VC
BB
Nhp mng
Yu cu
Cho php nhp mng a, s lng phn t n
tng
Cho trc mt mng c s lng phn t l MAX.
Nhp s lng phn t thc s n ca mng.
Nhp tng phn t cho mng t ch s 0 n n 1.
0 1 2 3 n4
-1 MAX - 1
Mng mt chiu
19
&
VC
BB
Hm Nhp Mng
Mng mt chiu
20
&
VC
BB
Xut mng
Yu cu
Cho trc mng a, s lng phn t n. Hy xut ni
dung mng a ra mn hnh.
tng
Xut gi tr tng phn t ca mng t ch s 0 n n-1.
0 1 2 n-1 MAX - 1
Mng mt chiu
21
&
VC
BB
Hm Xut Mng
printf(\n);
}
Mng mt chiu
22
&
VC
BB
Tm kim mt phn t trong mng
Yu cu
Tm xem phn t x c nm trong mng a kch thc n
hay khng? Nu c th n nm v tr u tin no.
tng
Xt tng phn ca mng a. Nu phn t ang xt bng
x th tr v v tr . Nu k tm c th tr v -1.
x v tr = 1
0 1 2 n-1 MAX - 1
a x b x
Mng mt chiu
23
&
VC
BB
Hm Tm Kim (dng while)
if (vt < n)
return vt;
else
return -1;
}
Mng mt chiu
24
&
VC
BB
Hm Tm Kim (dng for)
return -1;
}
Mng mt chiu
25
&
VC
BB
Kim tra tnh cht ca mng
Yu cu
Cho trc mng a, s lng phn t n. Mng a c
phi l mng ton cc s nguyn t hay khng?
tng
Cch 1: m s lng s ngt ca mng. Nu s
lng ny bng ng n th mng ton ngt.
Cch 2: m s lng s khng phi ngt ca mng.
Nu s lng ny bng 0 th mng ton ngt.
Cch 3: Tm xem c phn t no khng phi s ngt
khng. Nu c th mng khng ton s ngt.
Mng mt chiu
26
&
VC
BB
Hm Kim Tra (Cch 1)
if (dem == n)
return 1;
return 0;
}
Mng mt chiu
27
&
VC
BB
Hm Kim Tra (Cch 2)
if (dem == 0)
return 1;
return 0;
}
Mng mt chiu
28
&
VC
BB
Hm Kim Tra (Cch 3)
return 1;
}
Mng mt chiu
29
&
VC
BB
Tch cc phn t tha iu kin
Yu cu
Cho trc mng a, s lng phn t na. Tch cc s
nguyn t c trong mng a vo mng b.
tng
Duyt t phn t ca mng a, nu l s nguyn t
th a vo mng b.
Mng mt chiu
30
&
VC
BB
Hm Tch S Nguyn T
Mng mt chiu
31
&
VC
BB
Tch mng thnh 2 mng con
Yu cu
Cho trc mng a, s lng phn t na. Tch mng
a thnh 2 mng b (cha s nguyn t) v mng c
(cc s cn li).
tng
Cch 1: vit 1 hm tch cc s nguyn t t mng a
sang mng b v 1 hm tch cc s khng phi
nguyn t t mng a sang mng c.
Cch 2: Duyt t phn t ca mng a, nu l s
nguyn t th a vo mng b, ngc li a vo
mng c.
Mng mt chiu
32
&
VC
BB
Hm Tch 2 Mng
Yu cu
Cho trc mng a, s lng phn t na v mng b
s lng phn t nb. Gp 2 mng trn theo t t
thnh mng c, s lng phn t nc.
tng
Chuyn cc phn t ca mng a sang mng c
=> nc = na
Tip tc a cc phn t ca mng b sang mng c
=> nc = nc + nb
Mng mt chiu
34
&
VC
BB
Hm Gp Mng
Mng mt chiu
35
&
VC
BB
Tm gi tr ln nht ca mng
Yu cu
Cho trc mng a c n phn t. Tm gi tr ln nht
trong a (gi l max)
tng
Gi s gi tr max hin ti l gi tr phn t u tin a[0]
Ln lt kim tra cc phn t cn li cp nht max.
max 8
7
?
0 1 2 n1 MAX - 1
7 2 8 8
Mng mt chiu
36
&
VC
BB
Hm tm Max
return max;
}
Mng mt chiu
37
&
VC
BB
Sp xp mng thnh tng dn
Yu cu
Cho trc mng a kch thc n. Hy sp xp mng a
sao cho cc phn t c gi tr tng dn.
tng
S dng 2 bin i v j so snh tt c cp phn t
vi nhau v hon v cc cp nghch th (sai th t).
tm 5
8
0 1 2 n1 MAX - 1
5
1 1
5 8
6 6
8
38
i j j j j Mng mt chiu
&
VC
BB
Hm Sp Xp Tng
Mng mt chiu
39
&
VC
BB
Thm mt phn t vo mng
Yu cu
Thm phn t x vo mng a kch thc n ti v tr vt.
tng
y cc phn t bt u ti v tr vt sang phi 1 v tr.
a x vo v tr vt trong mng.
Tng n ln 1 n v.
x chn?
0 1 2 3 n1 n MAX - 1
a b c z
Mng mt chiu
40
vt
&
VC
BB
Hm Thm
a[vt] = x;
n++;
}
}
Mng mt chiu
41
&
VC
BB
Xa mt phn t trong mng
Yu cu
Xa mt phn t trong mng a kch thc n ti v tr vt
tng
Ko cc phn t bn phi v tr vt sang tri 1 v tr.
Gim n xung 1 n v.
xa?
0 1 2 n-1 n1 MAX - 1
a x b z
Mng mt chiu
42
vt
&
VC
BB
Hm Xa
n--;
}
}
Mng mt chiu
43
&
VC
BB
Bi tp
Mng mt chiu
44
&
VC
BB
Bi tp
Mng mt chiu
45
&
VC
BB
Bi tp
5. Cc thao tc x l
a. Tch cc s nguyn t c trong mng a a
vo mng b.
b. Tch mng a thnh 2 mng b (cha cc s
nguyn dng) v c (cha cc s cn li)
c. Sp xp mng gim dn
d. Sp xp mng sao cho cc s dng ng
u mng gim dn, k n l cc s m
tng dn, cui cng l cc s 0.
Mng mt chiu
46
&
VC
BB
Bi tp
6. Cc thao tc thm/xa/sa
a. Sa cc s nguyn t c trong mng thnh
s 0
b. Chn s 0 ng sau cc s nguyn t
trong mng
c. Xa tt c s nguyn t c trong mng
Mng mt chiu
47