Professional Documents
Culture Documents
VC
&
BB
20 20
Hm Nhp Mng
Mng mt chiu
void NhapMang(int a[], int &n)
{
printf(Nhap so luong phan tu n: );
scanf(%d, &n);
for (int i = 0; i < n; i++)
{
printf(Nhap phan tu thu %d: , i);
scanf(%d, &a[i]);
}
}
VC
&
BB
21 21
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.
Mng mt chiu
0
1
2
MAX - 1
n - 1
VC
&
BB
22 22
Hm Xut Mng
Mng mt chiu
void XuatMang(int a[], int n)
{
printf(Noi dung cua mang la: );
for (int i = 0; i < n; i++)
printf(%d , a[i]);
printf(\n);
}
VC
&
BB
23 23
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.
Mng mt chiu
x
0
1
2
MAX - 1
n - 1
a
x
b
x
v tr = 1
VC
&
BB
24 24
Hm Tm Kim (dng while)
Mng mt chiu
int TimKiem(int a[], int n, int x)
{
int vt = 0;
while (vt < n && a[vt] != x)
vt++;
if (vt < n)
return vt;
else
return -1;
}
VC
&
BB
25 25
Hm Tm Kim (dng for)
Mng mt chiu
int TimKiem(int a[], int n, int x)
{
for (int vt = 0; vt < n; vt++)
if (a[vt] == x)
return vt;
return -1;
}
VC
&
BB
26 26
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
VC
&
BB
27 27
Hm Kim Tra (Cch 1)
Mng mt chiu
int KiemTra_C1(int a[], int n)
{
int dem = 0;
for (int i = 0; i < n; i++)
if (LaSNT(a[i]) == 1) // c th b == 1
dem++;
if (dem == n)
return 1;
return 0;
}
VC
&
BB
28 28
Hm Kim Tra (Cch 2)
Mng mt chiu
int KiemTra_C2(int a[], int n)
{
int dem = 0;
for (int i = 0; i < n; i++)
if (LaSNT(a[i]) == 0) // C th s dng !
dem++;
if (dem == 0)
return 1;
return 0;
}
VC
&
BB
29 29
Hm Kim Tra (Cch 3)
Mng mt chiu
int KiemTra_C3(int a[], int n)
{
for (int i = 0; i < n ; i++)
if (LaSNT(a[i]) == 0)
return 0;
return 1;
}
VC
&
BB
30 30
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
VC
&
BB
31 31
Hm Tch S Nguyn T
Mng mt chiu
void TachSNT(int a[], int na, int b[], int &nb)
{
nb = 0;
for (int i = 0; i < na; i++)
if (LaSNT(a[i]) == 1)
{
b[nb] = a[i];
nb++;
}
}
VC
&
BB
32 32
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
VC
&
BB
33 33
Hm Tch 2 Mng
Mng mt chiu
void TachSNT2(int a[], int na,
int b[], int &nb, int c[], int &nc)
{
nb = 0;
nc = 0;
for (int i = 0; i < na; i++)
if (LaSNT(a[i]) == 1)
{
b[nb] = a[i]; nb++;
}
else
{
c[nc] = a[i]; nc++;
}
}
VC
&
BB
34 34
Gp 2 mng thnh mt 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
VC
&
BB
35 35
Hm Gp Mng
Mng mt chiu
void GopMang(int a[], int na, int b[], int nb,
int c[], int &nc)
{
nc = 0;
for (int i = 0; i < na; i++)
{
c[nc] = a[i]; nc++; // c[nc++] = a[i];
}
for (int i = 0; i < nb; i++)
{
c[nc] = b[i]; nc++; // c[nc++] = b[i];
}
}
VC
&
BB
36 36
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.
Mng mt chiu
?
max
7
8
0
1
2
MAX - 1
n 1
7
2
8
8
VC
&
BB
37 37
Hm tm Max
Mng mt chiu
int TimMax(int a[], int n)
{
int max = a[0];
for (int i = 1; i < n; i++)
if (a[i] > max)
max = a[i];
return max;
}
VC
&
BB
38 38
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).
Mng mt chiu
0
1
2
MAX - 1
n 1
5
1
8
6
tm
5
i
j
8
1
5
j
j
6
8
j
VC
&
BB
39 39
Hm Sp Xp Tng
Mng mt chiu
void SapXepTang(int a[], int n)
{
int i, j;
for (i = 0; i < n 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (a[i] > a[j])
HoanVi(a[i], a[j]);
}
}
}
VC
&
BB
40 40
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.
Mng mt chiu
c
z
z
0
1
2
MAX - 1
n 1
a
b
c
x
chn?
vt
n
3
VC
&
BB
41 41
Hm Thm
Mng mt chiu
void Them(int a[], int &n, int vt, int x)
{
if (vt >= 0 && vt <= n)
{
for (int i = n; i > vt; i--)
a[i] = a[i - 1];
a[vt] = x;
n++;
}
}
VC
&
BB
42 42
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.
Mng mt chiu
b
0
1
2
MAX - 1
n 1
a
x
b
z
xa?
vt
z
n - 1
VC
&
BB
43 43
Hm Xa
Mng mt chiu
void Xoa(int a[], int &n, int vt)
{
if (vt >= 0 && vt < n)
{
for (int i = vt; i < n 1; i++)
a[i] = a[i + 1];
n--;
}
}
VC
&
BB
44 44
Bi tp
1. Cc thao tc nhp xut
a. Nhp mng
b. Xut mng
2. Cc thao tc kim tra
a. Mng c phi l mng ton chn
b. Mng c phi l mng ton s nguyn t
c. Mng c phi l mng tng dn
Mng mt chiu
VC
&
BB
45 45
Bi tp
3. Cc thao tc tnh ton
a. C bao nhiu s chia ht cho 4 nhng khng
chia ht cho 5
b. Tng cc s nguyn t c trong mng
4. Cc thao tc tm kim
a. V tr cui cng ca phn t x trong mng
b. V tr s nguyn t u tin trong mng nu c
c. Tm s nh nht trong mng
d. Tm s dng nh nht trong mng
Mng mt chiu
VC
&
BB
46 46
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
VC
&
BB
47 47
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