24. VCVC
&&
BBBB
2424
Hm T狸m Ki畉m (d湛ng for)
NMLT - M畉ng m畛t chi畛u
int TimKiem(int a[], int n, int x)
{
for (int vt = 0; vt < n; vt++)
if (a[vt] == x)
return vt;
return -1;
}
25. VCVC
&&
BBBB
2525
Ki畛m tra t鱈nh ch畉t c畛a m畉ng
Y棚u c畉u
Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 n. M畉ng a c坦
ph畉i l m畉ng ton c叩c s畛 nguy棚n t畛 hay kh担ng?
驚 t動畛ng
C叩ch 1: 畉m s畛 l動畛ng s畛 ngt畛 c畛a m畉ng. N畉u s畛
l動畛ng ny b畉ng 炭ng n th狸 m畉ng ton ngt畛.
C叩ch 2: 畉m s畛 l動畛ng s畛 kh担ng ph畉i ngt畛 c畛a m畉ng.
N畉u s畛 l動畛ng ny b畉ng 0 th狸 m畉ng 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狸 m畉ng kh担ng ton s畛 ngt畛.
NMLT - M畉ng m畛t chi畛u
26. VCVC
&&
BBBB
2626
Hm Ki畛m Tra (C叩ch 1)
NMLT - M畉ng m畛t chi畛u
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;
}
27. VCVC
&&
BBBB
2727
Hm Ki畛m Tra (C叩ch 2)
NMLT - M畉ng m畛t chi畛u
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畛 d畛ng !
dem++;
if (dem == 0)
return 1;
return 0;
}
28. VCVC
&&
BBBB
2828
Hm Ki畛m Tra (C叩ch 3)
NMLT - M畉ng m畛t chi畛u
int KiemTra_C3(int a[], int n)
{
for (int i = 0; i < n ; i++)
if (LaSNT(a[i]) == 0)
return 0;
return 1;
}
29. VCVC
&&
BBBB
2929
T叩ch c叩c ph畉n t畛 th畛a i畛u ki畛n
Y棚u c畉u
Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 na. T叩ch c叩c s畛
nguy棚n t畛 c坦 trong m畉ng a vo m畉ng b.
驚 t動畛ng
Duy畛t t畛 ph畉n t畛 c畛a m畉ng a, n畉u 坦 l s畛 nguy棚n t畛
th狸 動a vo m畉ng b.
NMLT - M畉ng m畛t chi畛u
30. VCVC
&&
BBBB
3030
Hm T叩ch S畛 Nguy棚n T畛
NMLT - M畉ng m畛t chi畛u
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++;
}
}
31. VCVC
&&
BBBB
3131
T叩ch m畉ng thnh 2 m畉ng con
Y棚u c畉u
Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 na. T叩ch m畉ng
a thnh 2 m畉ng b (ch畛a s畛 nguy棚n t畛) v m畉ng c
(c叩c s畛 c嘆n l畉i).
驚 t動畛ng
C叩ch 1: vi畉t 1 hm t叩ch c叩c s畛 nguy棚n t畛 t畛 m畉ng a
sang m畉ng b v 1 hm t叩ch c叩c s畛 kh担ng ph畉i
nguy棚n t畛 t畛 m畉ng a sang m畉ng c.
C叩ch 2: Duy畛t t畛 ph畉n t畛 c畛a m畉ng a, n畉u 坦 l s畛
nguy棚n t畛 th狸 動a vo m畉ng b, ng動畛c l畉i 動a vo
m畉ng c.
NMLT - M畉ng m畛t chi畛u
32. VCVC
&&
BBBB
3232
Hm T叩ch 2 M畉ng
NMLT - M畉ng m畛t chi畛u
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++;
}
}
33. VCVC
&&
BBBB
3333
G畛p 2 m畉ng thnh m畛t m畉ng
Y棚u c畉u
Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 na v m畉ng b
s畛 l動畛ng ph畉n t畛 nb. G畛p 2 m畉ng tr棚n theo t畛 t畛 坦
thnh m畉ng c, s畛 l動畛ng ph畉n t畛 nc.
驚 t動畛ng
Chuy畛n c叩c ph畉n t畛 c畛a m畉ng a sang m畉ng c
=> nc = na
Ti畉p t畛c 動a c叩c ph畉n t畛 c畛a m畉ng b sang m畉ng c
=> nc = nc + nb
NMLT - M畉ng m畛t chi畛u
34. VCVC
&&
BBBB
3434
Hm G畛p M畉ng
NMLT - M畉ng m畛t chi畛u
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];
}
}
35. VCVC
&&
BBBB
3535
T狸m gi叩 tr畛 l畛n nh畉t c畛a m畉ng
Y棚u c畉u
Cho tr動畛c m畉ng a c坦 n ph畉n t畛. T狸m gi叩 tr畛 l畛n nh畉t
trong 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]
L畉n l動畛t ki畛m tra c叩c ph畉n t畛 c嘆n l畉i 畛 c畉p nh畉t max.
NMLT - M畉ng m畛t chi畛u
??max 7788
0 1 2 MAX -
1
n 1
77 22 88 88
36. VCVC
&&
BBBB
3636
Hm t狸m Max
NMLT - M畉ng m畛t chi畛u
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;
}
37. VCVC
&&
BBBB
3737
S畉p x畉p m畉ng thnh tng d畉n
Y棚u c畉u
Cho tr動畛c m畉ng a k鱈ch th動畛c n. H達y s畉p x畉p m畉ng a
坦 sao cho c叩c ph畉n t畛 c坦 gi叩 tr畛 tng d畉n.
驚 t動畛ng
S畛 d畛ng 2 bi畉n i v j 畛 so s叩nh t畉t c畉 c畉p ph畉n t畛
v畛i nhau v ho叩n v畛 c叩c c畉p ngh畛ch th畉 (sai th畛 t畛).
NMLT - M畉ng m畛t chi畛u
0 1 22 MAX -
1
n 1
55 11 88 66
t畉m 55
i j
88
11 55
j j
66 88
j
38. VCVC
&&
BBBB
3838
Hm S畉p X畉p Tng
NMLT - M畉ng m畛t chi畛u
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]);
}
}
}
39. VCVC
&&
BBBB
3939
Th棚m m畛t ph畉n t畛 vo m畉ng
Y棚u c畉u
Th棚m ph畉n t畛 x vo m畉ng a k鱈ch th動畛c n t畉i v畛 tr鱈 vt.
驚 t動畛ng
畉y c叩c ph畉n t畛 b畉t 畉u t畉i v畛 tr鱈 vt sang ph畉i 1 v畛 tr鱈.
動a x vo v畛 tr鱈 vt trong m畉ng.
Tng n l棚n 1 董n v畛.
NMLT - M畉ng m畛t chi畛u
cc zzzz
0 1 2 MAX -
1
n 1
aa bb cc
xx ch竪n?
vt
n3
40. VCVC
&&
BBBB
4040
Hm Th棚m
NMLT - M畉ng m畛t chi畛u
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++;
}
}
41. VCVC
&&
BBBB
4141
X坦a m畛t ph畉n t畛 trong m畉ng
Y棚u c畉u
X坦a m畛t ph畉n t畛 trong m畉ng a k鱈ch th動畛c n t畉i v畛 tr鱈 vt
驚 t動畛ng
K辿o c叩c ph畉n t畛 b棚n ph畉i v畛 tr鱈 vt sang tr叩i 1 v畛 tr鱈.
Gi畉m n xu畛ng 1 董n v畛.
NMLT - M畉ng m畛t chi畛u
bb
0 1 2 MAX -
1
n 1
a x b zz
x坦a?
vt
z
n - 1
42. VCVC
&&
BBBB
4242
Hm X坦a
NMLT - M畉ng m畛t chi畛u
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--;
}
}
43. VCVC
&&
BBBB
4343
Bi t畉p th畛c hnh
1. C叩c thao t叩c nh畉p xu畉t
a. Nh畉p m畉ng
b. Xu畉t m畉ng
2. C叩c thao t叩c ki畛m tra
a. M畉ng c坦 ph畉i l m畉ng ton ch畉n
b. M畉ng c坦 ph畉i l m畉ng ton s畛 nguy棚n t畛
c. M畉ng c坦 ph畉i l m畉ng tng d畉n
NMLT - M畉ng m畛t chi畛u
44. VCVC
&&
BBBB
4444
Bi t畉p th畛c hnh
3. C叩c thao t叩c t鱈nh to叩n
a. C坦 bao nhi棚u s畛 chia h畉t cho 4 nh動ng kh担ng
chia h畉t cho 5
b. T畛ng c叩c s畛 nguy棚n t畛 c坦 trong m畉ng
3. C叩c thao t叩c t狸m ki畉m
a. V畛 tr鱈 cu畛i c湛ng c畛a ph畉n t畛 x trong m畉ng
b. V畛 tr鱈 s畛 nguy棚n t畛 畉u ti棚n trong m畉ng n畉u c坦
c. T狸m s畛 nh畛 nh畉t trong m畉ng
d. T狸m s畛 d動董ng nh畛 nh畉t trong m畉ng
NMLT - M畉ng m畛t chi畛u
45. VCVC
&&
BBBB
4545
Bi t畉p th畛c hnh
5. C叩c thao t叩c x畛 l箪
a. T叩ch c叩c s畛 nguy棚n t畛 c坦 trong m畉ng a 動a
vo m畉ng b.
b. T叩ch m畉ng a thnh 2 m畉ng b (ch畛a c叩c s畛
nguy棚n d動董ng) v c (ch畛a c叩c s畛 c嘆n l畉i)
c. S畉p x畉p m畉ng gi畉m d畉n
d. S畉p x畉p m畉ng sao cho c叩c s畛 d動董ng 畛ng
畉u m畉ng gi畉m d畉n, k畉 畉n l c叩c s畛 但m
tng d畉n, cu畛i c湛ng l c叩c s畛 0.
NMLT - M畉ng m畛t chi畛u
46. VCVC
&&
BBBB
4646
Bi t畉p th畛c hnh
6. C叩c thao t叩c th棚m/x坦a/s畛a
a. S畛a c叩c s畛 nguy棚n t畛 c坦 trong m畉ng thnh
s畛 0
b. Ch竪n s畛 0 畉ng sau c叩c s畛 nguy棚n t畛 trong
m畉ng
c. X坦a t畉t c畉 s畛 nguy棚n t畛 c坦 trong m畉ng
NMLT - M畉ng m畛t chi畛u