Professional Documents
Culture Documents
Bài 9 Mảng 1 chiều PDF
Bài 9 Mảng 1 chiều PDF
NHP MN LP TRNH
MNG MT CHIU
VC
&
BB
Ni dung
Khi nim
Khai bo
Mng mt chiu
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.
Mng mt chiu
VC
&
BB
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
VC
&
BB
Tng minh
<kiu c s> <tn bin mng>[<s phn t>];
<kiu c s> <tn bin mng>[<N1>][<N2>][<Nn>];
Lu
Phi xc nh <s phn t> c th (hng) khi khai bo.
Mng nhiu chiu: <tng s phn t> = N1*N2**Nn
B nh s dng = <tng s phn t>*sizeof(<kiu c s>)
VC
&
BB
V d
int Mang1Chieu[10];
0
Mang1Chieu
int Mang2Chieu[3][4];
0
10 11
Mang2Chieu 0
1
2
Mng mt chiu
VC
&
BB
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>];
<tn kiu mng> <tn bin mng>;
V d
typedef int Mang1Chieu[10];
typedef int Mang2Chieu[3][4];
Mang1Chieu m1, m2, m3;
Mang2Chieu m4, m5;
Mng mt chiu
VC
&
BB
S phn t ca mng
// int a[10];
// int b[10][20];
Mng mt chiu
VC
&
BB
Gm cc cch sau
Khi to gi tr cho mi phn t ca mng
int a[4] = {2912, 1706, 1506, 1904};
2912
1706
1506
1904
2912
1706
0
Mng mt chiu
VC
&
BB
Gm cc cch sau
Khi to gi tr 0 cho mi phn t ca mng
int a[4] = {0};
T ng xc nh s lng phn t
int a[] = {2912, 1706, 1506, 1904};
2912
1706
1506
1904
Mng mt chiu
10
VC
&
BB
Thng qua ch s
<tn bin mng>[<gt cs1>][<gt cs2>][<gt csn>]
V d
Cho mng nh sau
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
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
Ch s mng khng hp l
int a[4];
a[-1] = 1; a[10] = 0;
Mng mt chiu
13
VC
&
BB
14
VC
&
BB
Li gi hm
void NhapMang(int a[], int &n);
void XuatMang(int a[], int n);
void main()
{
int a[100], n;
NhapMang(a, n);
XuatMang(a, n);
}
Mng mt chiu
15
VC
&
BB
Mt s bi ton c bn
16
VC
&
BB
Mt s quy c
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
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.
n4
-1
MAX - 1
Mng mt chiu
19
VC
&
Hm Nhp Mng
BB
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.
n-1
MAX - 1
Mng mt chiu
21
VC
&
Hm Xut Mng
BB
printf(\n);
}
Mng mt chiu
22
VC
&
BB
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.
v tr = 1
n-1
MAX - 1
Mng mt chiu
23
VC
&
BB
if (vt < n)
return vt;
else
return -1;
}
Mng mt chiu
24
VC
&
BB
Mng mt chiu
25
VC
&
BB
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
Mng mt chiu
27
VC
&
BB
Mng mt chiu
28
VC
&
BB
Mng mt chiu
29
VC
&
BB
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
&
Hm Tch S Nguyn T
BB
Mng mt chiu
31
VC
&
BB
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
&
Hm Tch 2 Mng
BB
33
VC
&
BB
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
&
Hm Gp Mng
BB
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
?
n1
MAX - 1
Mng mt chiu
36
VC
&
Hm tm Max
BB
Mng mt chiu
37
VC
&
BB
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
5
1
1
5
8
6
6
8
n1
MAX - 1
Mng mt chiu
38
VC
&
Hm Sp Xp Tng
BB
Mng mt chiu
39
VC
&
BB
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?
n1
vt
MAX - 1
Mng mt chiu
40
VC
&
Hm Thm
BB
a[vt] = x;
n++;
}
}
Mng mt chiu
41
VC
&
BB
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
vt
n-1 n1
MAX - 1
Mng mt chiu
42
VC
&
Hm Xa
BB
n--;
}
}
Mng mt chiu
43
VC
&
BB
Bi tp
Mng mt chiu
44
VC
&
BB
Bi tp
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