際際滷

際際滷Share a Scribd company logo
VCVC
&&
BBBB
11
N畛i dung
NMLT - M畉ng m畛t chi畛u
Kh叩i ni畛m1
Khai b叩o2
Truy xu畉t d畛 li畛u ki畛u m畉ng3
M畛t s畛 bi to叩n tr棚n m畉ng 1 chi畛u4
VCVC
&&
BBBB
22
畉t v畉n 畛
V鱈 d畛
 Ch動董ng tr狸nh c畉n l動u tr畛 3 s畛 nguy棚n?
=> Khai b叩o 3 bi畉n int a1, a2, a3;
 Ch動董ng tr狸nh c畉n l動u tr畛 100 s畛 nguy棚n?
=> Khai b叩o 100 bi畉n ki畛u s畛 nguy棚n!
 Ng動畛i d湛ng mu畛n nh畉p n s畛 nguy棚n?
=> Kh担ng th畛c hi畛n 動畛c!
Gi畉i ph叩p
 Ki畛u d畛 li畛u m畛i cho ph辿p l動u tr畛 m畛t d達y
c叩c s畛 nguy棚n v d畛 dng truy xu畉t.
NMLT - M畉ng m畛t chi畛u
VCVC
&&
BBBB
33
D畛 li畛u ki畛u m畉ng
Kh叩i ni畛m
 L m畛t ki畛u d畛 li畛u c坦 c畉u tr炭c do ng動畛i l畉p
tr狸nh 畛nh ngh挑a.
 Bi畛u di畛n m畛t d達y c叩c bi畉n c坦 c湛ng ki畛u. V鱈
d畛: d達y c叩c s畛 nguy棚n, d達y c叩c k箪 t畛奄
 K鱈ch th動畛c 動畛c x叩c 畛nh ngay khi khai b叩o
v kh担ng bao gi畛 thay 畛i.
 NNLT C lu担n ch畛 畛nh m畛t kh畛i nh畛 li棚n t畛c
cho m畛t bi畉n ki畛u m畉ng.
NMLT - M畉ng m畛t chi畛u
VCVC
&&
BBBB
44
Khai b叩o bi畉n m畉ng (t動畛ng minh)
T動畛ng minh
 <N1>, , <Nn> : s畛 l動畛ng ph畉n t畛 c畛a m畛i chi畛u.
L動u 箪
 Ph畉i x叩c 畛nh <s畛 ph畉n t畛> c畛 th畛 (h畉ng) khi khai b叩o.
 M畉ng nhi畛u chi畛u: <t畛ng s畛 ph畉n t畛> = N1*N2**Nn
 B畛 nh畛 s畛 d畛ng = <t畛ng s畛 ph畉n t畛>*sizeof(<ki畛u c董 s畛>)
 B畛 nh畛 s畛 d畛ng ph畉i 鱈t h董n 64KB (65535 Bytes)
 M畛t d達y li棚n t畛c c坦 ch畛 s畛 t畛 0 畉n <t畛ng s畛 ph畉n t畛>-1
NMLT - M畉ng m畛t chi畛u
<ki畛u c董 s畛> <t棚n bi畉n m畉ng>[<s畛 ph畉n t畛>];
<ki畛u c董 s畛> <t棚n bi畉n m畉ng>[<N1>][<N2>][<Nn>];
VCVC
&&
BBBB
55
0
1
2
Khai b叩o bi畉n m畉ng (t動畛ng minh)
V鱈 d畛
NMLT - M畉ng m畛t chi畛u
int Mang1Chieu[10];
0 1 2 3 4 7 85 6 9
Mang1Chieu
int Mang2Chieu[3][4];
0 1 2 3 4 7 85 6 9
Mang2Chieu
10 11
VCVC
&&
BBBB
66
Khai b叩o bi畉n m畉ng (k担 t動畛ng minh)
C炭 ph叩p
 Kh担ng t動畛ng minh (th担ng qua khai b叩o ki畛u)
V鱈 d畛
NMLT - M畉ng m畛t chi畛u
typedef <ki畛u c董 s畛> <t棚n ki畛u m畉ng>[<s畛 ph畉n t畛>];
typedef <ki畛u c董 s畛> <t棚n ki畛u m畉ng>[<N1>][<Nn>];
<t棚n ki畛u m畉ng> <t棚n bi畉n m畉ng>;
typedef int Mang1Chieu[10];
typedef int Mang2Chieu[3][4];
Mang1Chieu m1, m2, m3;
Mang2Chieu m4, m5;
VCVC
&&
BBBB
77
S畛 ph畉n t畛 c畛a m畉ng
Ph畉i x叩c 畛nh c畛 th畛 s畛 ph畉n t畛 ngay l炭c khai
b叩o, kh担ng 動畛c s畛 d畛ng bi畉n ho畉c h畉ng
th動畛ng
N棚n s畛 d畛ng ch畛 th畛 ti畛n x畛 l箪 #define 畛 畛nh
ngh挑a s畛 ph畉n t畛 m畉ng
NMLT - M畉ng m畛t chi畛u
int n1 = 10; int a[n1];
const int n2 = 20; int b[n2];
#define n1 10
#define n2 20
int a[n1]; //  int a[10];
int b[n1][n2]; //  int b[10][20];
VCVC
&&
BBBB
88
Kh畛i t畉o gi叩 tr畛 cho m畉ng l炭c khai b叩o
G畛m c叩c c叩ch sau
 Kh畛i t畉o gi叩 tr畛 cho m畛i ph畉n t畛 c畛a m畉ng
 Kh畛i t畉o gi叩 tr畛 cho m畛t s畛 ph畉n t畛 畉u m畉ng
NMLT - M畉ng m畛t chi畛u
int a[4] = {2912, 1706, 1506, 1904};
29122912 17061706 15061506 19041904
0 1 2 3
a
int a[4] = {2912, 1706};
29122912 17061706 00 00
0 1 2 3
a
VCVC
&&
BBBB
99
Kh畛i t畉o gi叩 tr畛 cho m畉ng l炭c khai b叩o
G畛m c叩c c叩ch sau
 Kh畛i t畉o gi叩 tr畛 0 cho m畛i ph畉n t畛 c畛a m畉ng
 T畛 畛ng x叩c 畛nh s畛 l動畛ng ph畉n t畛
NMLT - M畉ng m畛t chi畛u
int a[4] = {0};
00 00 00 00
0 1 2 3
a
int a[] = {2912, 1706, 1506, 1904};
29122912 17061706 15061506 19041904
0 1 2 3
a
VCVC
&&
BBBB
1010
Truy xu畉t 畉n m畛t ph畉n t畛
Th担ng qua ch畛 s畛
V鱈 d畛
 Cho m畉ng nh動 sau
 C叩c truy xu畉t
 H畛p l畛: a[0], a[1], a[2], a[3]
 Kh担ng h畛p l畛: a[-1], a[4], a[5], 
=> Cho k畉t th動畛ng kh担ng nh動 mong mu畛n!
NMLT - M畉ng m畛t chi畛u
<t棚n bi畉n m畉ng>[<gt cs1>][<gt cs2>][<gt csn>]
int a[4];
0 1 2 3
VCVC
&&
BBBB
1111
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畛 t動董ng
畛ng
V鱈 d畛
NMLT - M畉ng m畛t chi畛u
#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];
VCVC
&&
BBBB
1212
M畛t s畛 l畛i th動畛ng g畉p
 Khai b叩o kh担ng ch畛 r探 s畛 l動畛ng ph畉n t畛
 int a[]; => int a[100];
 S畛 l動畛ng ph畉n t畛 li棚n quan 畉n bi畉n ho畉c h畉ng
 int n1 = 10; int a[n1]; => int a[10];
 const int n2 = 10; int a[n2]; => int a[10];
 Kh畛i t畉o c叩ch bi畛t v畛i khai b叩o
 int a[4]; a = {2912, 1706, 1506, 1904};
=> int a[4] = {2912, 1706, 1506, 1904};
 Ch畛 s畛 m畉ng kh担ng h畛p l畛
 int a[4];
 a[-1] = 1; a[10] = 0;
NMLT - M畉ng m畛t chi畛u
VCVC
&&
BBBB
1313
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畛 ho畉c s畛 d畛ng con tr畛.
 M畉ng c坦 th畛 thay 畛i n畛i dung sau khi th畛c hi畛n hm.
NMLT - M畉ng m畛t chi畛u
void SapXepTang(int a[100]);
void SapXepTang(int a[]);
void SapXepTang(int *a);
VCVC
&&
BBBB
1414
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 m畛t chi畛u
void SapXepTang(int a[100], int n);
void SapXepTang(int a[], int n);
void SapXepTang(int *a, int n);
void NhapMang(int a[], int &n);
void XuatMang(int a[], int n);
void main()
{
int a[100], n;
NhapMang(a, n);
XuatMang(a, n);
}
VCVC
&&
BBBB
1515
M畛t s畛 bi to叩n c董 b畉n
Vi畉t hm th畛c hi畛n t畛ng 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叩ch m畉ng / G畛p m畉ng
 T狸m gi叩 tr畛 nh畛 nh畉t/l畛n nh畉t c畛a m畉ng
 S畉p x畉p m畉ng gi畉m d畉n/tng d畉n
 Th棚m/X坦a/S畛a m畛t ph畉n t畛 vo m畉ng
NMLT - M畉ng m畛t chi畛u
VCVC
&&
BBBB
1616
M畛t s畛 quy 動畛c
S畛 l動畛ng ph畉n t畛
C叩c hm
 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 m畛t chi畛u
#define MAX 100
VCVC
&&
BBBB
1717
Th畛 t畛c HoanVi & Hm LaSNT
NMLT - M畉ng m畛t chi畛u
VCVC
&&
BBBB
1818
Nh畉p m畉ng
Y棚u c畉u
 Cho ph辿p nh畉p m畉ng a, s畛 l動畛ng ph畉n t畛 n
驚 t動畛ng
 Cho tr動畛c m畛t m畉ng c坦 s畛 l動畛ng ph畉n t畛 l MAX.
 Nh畉p s畛 l動畛ng ph畉n t畛 th畛c s畛 n c畛a m畉ng.
 Nh畉p t畛ng ph畉n t畛 cho m畉ng t畛 ch畛 s畛 0 畉n n  1.
NMLT - M畉ng m畛t chi畛u
440 1 2 3 MAX -
1
n - 1
VCVC
&&
BBBB
1919
Hm Nh畉p M畉ng
NMLT - M畉ng m畛t chi畛u
void NhapMang(int a[], int &n)
{
cout<<Nhap so luong phan tu n: ;
cin>>n;
for (int i = 0; i < n; i++)
{
cout<<Nhap phan tu thu : << i;
cin>>a[i];
}
}
VCVC
&&
BBBB
2020
Xu畉t m畉ng
Y棚u c畉u
 Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 n. H達y xu畉t n畛i
dung m畉ng a ra mn h狸nh.
驚 t動畛ng
 Xu畉t gi叩 tr畛 t畛ng ph畉n t畛 c畛a m畉ng t畛 ch畛 s畛 0 畉n n-
1.
NMLT - M畉ng m畛t chi畛u
0 1 2 MAX -
1
n - 1
VCVC
&&
BBBB
2121
Hm Xu畉t M畉ng
NMLT - M畉ng m畛t chi畛u
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);
}
VCVC
&&
BBBB
2222
T狸m ki畉m m畛t ph畉n t畛 trong m畉ng
Y棚u c畉u
 T狸m xem ph畉n t畛 x c坦 n畉m trong m畉ng a k鱈ch th動畛c n
hay kh担ng? N畉u c坦 th狸 n坦 n畉m 畛 v畛 tr鱈 畉u ti棚n no.
驚 t動畛ng
 X辿t t畛ng ph畉n c畛a m畉ng a. N畉u ph畉n t畛 ang x辿t b畉ng
x th狸 tr畉 v畛 v畛 tr鱈 坦. N畉u k担 t狸m 動畛c th狸 tr畉 v畛 -1.
NMLT - M畉ng m畛t chi畛u
xx
0 1 2 MAX -
1
n - 1
 aa xx bb xx
v畛 tr鱈 =
1
VCVC
&&
BBBB
2323
Hm T狸m Ki畉m (d湛ng while)
NMLT - M畉ng m畛t chi畛u
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;
}
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
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;
}
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;
}
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;
}
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
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++;
}
}
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
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++;
}
}
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
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];
}
}
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
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;
}
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
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]);
}
}
}
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
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++;
}
}
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
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--;
}
}
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
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
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
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
VCVC
&&
BBBB
4747
int DemSoChuSoBangX(int a[], int n, int x)
{
int dem=0;
for(int i=0; i<n; i++)
if(a[i]==x)
dem++;
return dem;
}
VCVC
&&
BBBB
4848
void DemSoLanXuatHien(int a[], int n, int b[])
{
 SetValue(b, 10, 0;);
 for(int i=0; i<n; i++)
 {
 b[a[i]]++;
 }
}
VCVC
&&
BBBB
4949
int DoDaiDayConSoXDaiNhat(int a[], int n, int x)
{
int kq = 0;
for(int i=0; i<n; i++)
{
if(a[i]==x)
{
int dem = 1;
int j = i+1;
while(a[j]==x)
{
j++;
dem++;
}

More Related Content

Nmlt c07 mang1_chieu

  • 1. VCVC && BBBB 11 N畛i dung NMLT - M畉ng m畛t chi畛u Kh叩i ni畛m1 Khai b叩o2 Truy xu畉t d畛 li畛u ki畛u m畉ng3 M畛t s畛 bi to叩n tr棚n m畉ng 1 chi畛u4
  • 2. VCVC && BBBB 22 畉t v畉n 畛 V鱈 d畛 Ch動董ng tr狸nh c畉n l動u tr畛 3 s畛 nguy棚n? => Khai b叩o 3 bi畉n int a1, a2, a3; Ch動董ng tr狸nh c畉n l動u tr畛 100 s畛 nguy棚n? => Khai b叩o 100 bi畉n ki畛u s畛 nguy棚n! Ng動畛i d湛ng mu畛n nh畉p n s畛 nguy棚n? => Kh担ng th畛c hi畛n 動畛c! Gi畉i ph叩p Ki畛u d畛 li畛u m畛i cho ph辿p l動u tr畛 m畛t d達y c叩c s畛 nguy棚n v d畛 dng truy xu畉t. NMLT - M畉ng m畛t chi畛u
  • 3. VCVC && BBBB 33 D畛 li畛u ki畛u m畉ng Kh叩i ni畛m L m畛t ki畛u d畛 li畛u c坦 c畉u tr炭c do ng動畛i l畉p tr狸nh 畛nh ngh挑a. Bi畛u di畛n m畛t d達y c叩c bi畉n c坦 c湛ng ki畛u. V鱈 d畛: d達y c叩c s畛 nguy棚n, d達y c叩c k箪 t畛奄 K鱈ch th動畛c 動畛c x叩c 畛nh ngay khi khai b叩o v kh担ng bao gi畛 thay 畛i. NNLT C lu担n ch畛 畛nh m畛t kh畛i nh畛 li棚n t畛c cho m畛t bi畉n ki畛u m畉ng. NMLT - M畉ng m畛t chi畛u
  • 4. VCVC && BBBB 44 Khai b叩o bi畉n m畉ng (t動畛ng minh) T動畛ng minh <N1>, , <Nn> : s畛 l動畛ng ph畉n t畛 c畛a m畛i chi畛u. L動u 箪 Ph畉i x叩c 畛nh <s畛 ph畉n t畛> c畛 th畛 (h畉ng) khi khai b叩o. M畉ng nhi畛u chi畛u: <t畛ng s畛 ph畉n t畛> = N1*N2**Nn B畛 nh畛 s畛 d畛ng = <t畛ng s畛 ph畉n t畛>*sizeof(<ki畛u c董 s畛>) B畛 nh畛 s畛 d畛ng ph畉i 鱈t h董n 64KB (65535 Bytes) M畛t d達y li棚n t畛c c坦 ch畛 s畛 t畛 0 畉n <t畛ng s畛 ph畉n t畛>-1 NMLT - M畉ng m畛t chi畛u <ki畛u c董 s畛> <t棚n bi畉n m畉ng>[<s畛 ph畉n t畛>]; <ki畛u c董 s畛> <t棚n bi畉n m畉ng>[<N1>][<N2>][<Nn>];
  • 5. VCVC && BBBB 55 0 1 2 Khai b叩o bi畉n m畉ng (t動畛ng minh) V鱈 d畛 NMLT - M畉ng m畛t chi畛u int Mang1Chieu[10]; 0 1 2 3 4 7 85 6 9 Mang1Chieu int Mang2Chieu[3][4]; 0 1 2 3 4 7 85 6 9 Mang2Chieu 10 11
  • 6. VCVC && BBBB 66 Khai b叩o bi畉n m畉ng (k担 t動畛ng minh) C炭 ph叩p Kh担ng t動畛ng minh (th担ng qua khai b叩o ki畛u) V鱈 d畛 NMLT - M畉ng m畛t chi畛u typedef <ki畛u c董 s畛> <t棚n ki畛u m畉ng>[<s畛 ph畉n t畛>]; typedef <ki畛u c董 s畛> <t棚n ki畛u m畉ng>[<N1>][<Nn>]; <t棚n ki畛u m畉ng> <t棚n bi畉n m畉ng>; typedef int Mang1Chieu[10]; typedef int Mang2Chieu[3][4]; Mang1Chieu m1, m2, m3; Mang2Chieu m4, m5;
  • 7. VCVC && BBBB 77 S畛 ph畉n t畛 c畛a m畉ng Ph畉i x叩c 畛nh c畛 th畛 s畛 ph畉n t畛 ngay l炭c khai b叩o, kh担ng 動畛c s畛 d畛ng bi畉n ho畉c h畉ng th動畛ng N棚n s畛 d畛ng ch畛 th畛 ti畛n x畛 l箪 #define 畛 畛nh ngh挑a s畛 ph畉n t畛 m畉ng NMLT - M畉ng m畛t chi畛u int n1 = 10; int a[n1]; const int n2 = 20; int b[n2]; #define n1 10 #define n2 20 int a[n1]; // int a[10]; int b[n1][n2]; // int b[10][20];
  • 8. VCVC && BBBB 88 Kh畛i t畉o gi叩 tr畛 cho m畉ng l炭c khai b叩o G畛m c叩c c叩ch sau Kh畛i t畉o gi叩 tr畛 cho m畛i ph畉n t畛 c畛a m畉ng Kh畛i t畉o gi叩 tr畛 cho m畛t s畛 ph畉n t畛 畉u m畉ng NMLT - M畉ng m畛t chi畛u int a[4] = {2912, 1706, 1506, 1904}; 29122912 17061706 15061506 19041904 0 1 2 3 a int a[4] = {2912, 1706}; 29122912 17061706 00 00 0 1 2 3 a
  • 9. VCVC && BBBB 99 Kh畛i t畉o gi叩 tr畛 cho m畉ng l炭c khai b叩o G畛m c叩c c叩ch sau Kh畛i t畉o gi叩 tr畛 0 cho m畛i ph畉n t畛 c畛a m畉ng T畛 畛ng x叩c 畛nh s畛 l動畛ng ph畉n t畛 NMLT - M畉ng m畛t chi畛u int a[4] = {0}; 00 00 00 00 0 1 2 3 a int a[] = {2912, 1706, 1506, 1904}; 29122912 17061706 15061506 19041904 0 1 2 3 a
  • 10. VCVC && BBBB 1010 Truy xu畉t 畉n m畛t ph畉n t畛 Th担ng qua ch畛 s畛 V鱈 d畛 Cho m畉ng nh動 sau C叩c truy xu畉t H畛p l畛: a[0], a[1], a[2], a[3] Kh担ng h畛p l畛: a[-1], a[4], a[5], => Cho k畉t th動畛ng kh担ng nh動 mong mu畛n! NMLT - M畉ng m畛t chi畛u <t棚n bi畉n m畉ng>[<gt cs1>][<gt cs2>][<gt csn>] int a[4]; 0 1 2 3
  • 11. VCVC && BBBB 1111 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畛 t動董ng 畛ng V鱈 d畛 NMLT - M畉ng m畛t chi畛u #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];
  • 12. VCVC && BBBB 1212 M畛t s畛 l畛i th動畛ng g畉p Khai b叩o kh担ng ch畛 r探 s畛 l動畛ng ph畉n t畛 int a[]; => int a[100]; S畛 l動畛ng ph畉n t畛 li棚n quan 畉n bi畉n ho畉c h畉ng int n1 = 10; int a[n1]; => int a[10]; const int n2 = 10; int a[n2]; => int a[10]; Kh畛i t畉o c叩ch bi畛t v畛i khai b叩o int a[4]; a = {2912, 1706, 1506, 1904}; => int a[4] = {2912, 1706, 1506, 1904}; Ch畛 s畛 m畉ng kh担ng h畛p l畛 int a[4]; a[-1] = 1; a[10] = 0; NMLT - M畉ng m畛t chi畛u
  • 13. VCVC && BBBB 1313 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畛 ho畉c s畛 d畛ng con tr畛. M畉ng c坦 th畛 thay 畛i n畛i dung sau khi th畛c hi畛n hm. NMLT - M畉ng m畛t chi畛u void SapXepTang(int a[100]); void SapXepTang(int a[]); void SapXepTang(int *a);
  • 14. VCVC && BBBB 1414 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 m畛t chi畛u void SapXepTang(int a[100], int n); void SapXepTang(int a[], int n); void SapXepTang(int *a, int n); void NhapMang(int a[], int &n); void XuatMang(int a[], int n); void main() { int a[100], n; NhapMang(a, n); XuatMang(a, n); }
  • 15. VCVC && BBBB 1515 M畛t s畛 bi to叩n c董 b畉n Vi畉t hm th畛c hi畛n t畛ng 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叩ch m畉ng / G畛p m畉ng T狸m gi叩 tr畛 nh畛 nh畉t/l畛n nh畉t c畛a m畉ng S畉p x畉p m畉ng gi畉m d畉n/tng d畉n Th棚m/X坦a/S畛a m畛t ph畉n t畛 vo m畉ng NMLT - M畉ng m畛t chi畛u
  • 16. VCVC && BBBB 1616 M畛t s畛 quy 動畛c S畛 l動畛ng ph畉n t畛 C叩c hm 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 m畛t chi畛u #define MAX 100
  • 17. VCVC && BBBB 1717 Th畛 t畛c HoanVi & Hm LaSNT NMLT - M畉ng m畛t chi畛u
  • 18. VCVC && BBBB 1818 Nh畉p m畉ng Y棚u c畉u Cho ph辿p nh畉p m畉ng a, s畛 l動畛ng ph畉n t畛 n 驚 t動畛ng Cho tr動畛c m畛t m畉ng c坦 s畛 l動畛ng ph畉n t畛 l MAX. Nh畉p s畛 l動畛ng ph畉n t畛 th畛c s畛 n c畛a m畉ng. Nh畉p t畛ng ph畉n t畛 cho m畉ng t畛 ch畛 s畛 0 畉n n 1. NMLT - M畉ng m畛t chi畛u 440 1 2 3 MAX - 1 n - 1
  • 19. VCVC && BBBB 1919 Hm Nh畉p M畉ng NMLT - M畉ng m畛t chi畛u void NhapMang(int a[], int &n) { cout<<Nhap so luong phan tu n: ; cin>>n; for (int i = 0; i < n; i++) { cout<<Nhap phan tu thu : << i; cin>>a[i]; } }
  • 20. VCVC && BBBB 2020 Xu畉t m畉ng Y棚u c畉u Cho tr動畛c m畉ng a, s畛 l動畛ng ph畉n t畛 n. H達y xu畉t n畛i dung m畉ng a ra mn h狸nh. 驚 t動畛ng Xu畉t gi叩 tr畛 t畛ng ph畉n t畛 c畛a m畉ng t畛 ch畛 s畛 0 畉n n- 1. NMLT - M畉ng m畛t chi畛u 0 1 2 MAX - 1 n - 1
  • 21. VCVC && BBBB 2121 Hm Xu畉t M畉ng NMLT - M畉ng m畛t chi畛u 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); }
  • 22. VCVC && BBBB 2222 T狸m ki畉m m畛t ph畉n t畛 trong m畉ng Y棚u c畉u T狸m xem ph畉n t畛 x c坦 n畉m trong m畉ng a k鱈ch th動畛c n hay kh担ng? N畉u c坦 th狸 n坦 n畉m 畛 v畛 tr鱈 畉u ti棚n no. 驚 t動畛ng X辿t t畛ng ph畉n c畛a m畉ng a. N畉u ph畉n t畛 ang x辿t b畉ng x th狸 tr畉 v畛 v畛 tr鱈 坦. N畉u k担 t狸m 動畛c th狸 tr畉 v畛 -1. NMLT - M畉ng m畛t chi畛u xx 0 1 2 MAX - 1 n - 1 aa xx bb xx v畛 tr鱈 = 1
  • 23. VCVC && BBBB 2323 Hm T狸m Ki畉m (d湛ng while) NMLT - M畉ng m畛t chi畛u
  • 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
  • 47. VCVC && BBBB 4747 int DemSoChuSoBangX(int a[], int n, int x) { int dem=0; for(int i=0; i<n; i++) if(a[i]==x) dem++; return dem; }
  • 48. VCVC && BBBB 4848 void DemSoLanXuatHien(int a[], int n, int b[]) { SetValue(b, 10, 0;); for(int i=0; i<n; i++) { b[a[i]]++; } }
  • 49. VCVC && BBBB 4949 int DoDaiDayConSoXDaiNhat(int a[], int n, int x) { int kq = 0; for(int i=0; i<n; i++) { if(a[i]==x) { int dem = 1; int j = i+1; while(a[j]==x) { j++; dem++; }