Professional Documents
Culture Documents
Bài 12 Dữ liệu kiểu cấu trúc PDF
Bài 12 Dữ liệu kiểu cấu trúc PDF
NHP MN LP TRNH
ThS. ng Bnh Phng
dbphuong@fit.hcmus.edu.vn
VC
&
BB
Ni dung
Bi tp
VC
&
BB
t vn
Thng tin 1 SV
MSSV: kiu chui
Tn SV: kiu chui
NTNS: kiu chui
Phi: kiu k t
im Ton, L, Ha: kiu s thc
Yu cu
Lu thng tin n SV?
Truyn thng tin n SV vo hm?
D liu kiu cu trc
VC
&
t vn
BB
Khai bo cc bin lu tr 1 SV
char szMSSV[8];
//
char szHoten[30];
//
char szNTNS[9];
//
char cGioiTinh;
//
float fToan, fLy, fHoa;
0312078
H. P. Trang
17/06/85
y
// 8.5 9.0 10.0
VC
&
BB
t vn
Nhn xt
t tn bin kh khn v kh qun l
Truyn tham s cho hm qu nhiu
Tm kim, sp xp, sao chp, kh khn
Tn nhiu b nh
tng
Gom nhng thng tin ca cng 1 SV thnh
mt kiu d liu mi => Kiu struct
D liu kiu cu trc
VC
&
BB
C php
struct <tn kiu cu trc>
{
<kiu d liu> <tn thnh phn 1>;
V d
struct SDiem2D
{
int m_nX;
int m_nY;
};
D liu kiu cu trc
VC
&
BB
V d
struct SDiem2D
{
int m_nX;
int m_nY;
} diem2D1, diem2D2;
D liu kiu cu trc
VC
&
BB
V d
struct SDiem2D
{
int m_nX;
int m_nY;
};
struct SDiem2D diem2D1, diem2D2; // Trong C chun
D liu kiu cu trc
VC
&
BB
S dng typedef
C php
typedef struct
{
<kiu d liu> <tn thnh phn 1>;
V d
typedef struct
{
int m_nX;
int m_nY;
} SDiem2D;
struct SDiem2D diem2D1, diem2D2;
D liu kiu cu trc
VC
&
BB
V d
struct SDiem2D
{
int m_nX;
int m_nY;
} diem2D1 = {2912, 1706}, diem2D2;
D liu kiu cu trc
10
VC
&
BB
c im
Khng th truy xut trc tip
Thng qua ton t thnh phn cu trc . hay
cn gi l ton t chm (dot operation)
<tn bin cu trc>.<tn thnh phn>
V d
struct SDiem2D
{
int m_nX;
int m_nY;
} diem2D1;
printf(x = %d, y = %d, diem2D1.m_nX, diem2D1.m_nY);
D liu kiu cu trc
11
VC
&
BB
C 2 cch
<bin cu trc ch> = <bin cu trc ngun>;
<bin cu trc ch>.<tn thnh phn> = <gi tr>;
V d
struct SDiem2D
{
int m_nX, m_nY;
} diem2D1 = {2912, 1706}, diem2D2;
diem2D2 = diem2D1;
diem2D2.m_nX = diem2D1.m_nX;
diem2D2.m_nY = diem2D1.m_nY * 2;
D liu kiu cu trc
12
VC
&
BB
Cu trc phc tp
hinhChuNhat1.m_diem2DTraiTren.m_nX = 2912;
hinhChuNhat1.m_diem2DPhaiDuoi.m_nY = 1706;
D liu kiu cu trc
13
VC
&
BB
Cu trc phc tp
14
VC
&
BB
Cu trc phc tp
15
VC
&
BB
Cu trc phc tp
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
16
VC
&
BB
V d
struct SA
{
int m_nA;
double m_nB;
};
sizeof(A) = ???
struct SB1
{
int m_nA;
int m_nB;
double m_dC;
};
sizeof(SB1) = ???
struct SB2
{
int m_nA;
double m_dC;
int m_nB;
};
sizeof(SB2) = ???
D liu kiu cu trc
17
VC
&
BB
Ch th #pragma pack
18
VC
&
BB
#pragma pack
a a a a a a a a
b b b b c c c c
b b b b
m 4B
a a a a a a a a
c c c c
m 4B
b b b b c c c c
a a a a a a a a
D liu kiu cu trc
19
VC
&
BB
Cc lu v cu trc
Lu
Kiu cu trc c nh ngha lm khun
dng cn bin cu trc c khai bo s
dng khun dng nh ngha.
Trong C++, c th b t kha struct khi khai
bo bin (hoc s dng typedef)
Khi nhp cc bin kiu s thc trong cu trc
phi nhp thng qua mt bin trung gian.
struct SDiem2D { float m_nX, m_nY; } diem2D1;
float fTam;
scanf(%f, &fTam); diem2D1.m_nX = fTam;
D liu kiu cu trc
20
VC
&
BB
Mng cu trc
Mng cu trc
Tng t nh mng vi kiu d liu c s
(char, int, float, )
struct SDiem2D
{
int m_nX;
int m_nY;
};
SDiem2D arr1[20];
SDiem2D arr2[10] = {{3, 2}, {4, 4}, {2, 7}};
21
VC
&
BB
V d
struct SDiem2D { int m_nX, m_nY; };
void
void
void
void
xuat1(int x, int y) { };
xuat2(SDiem2D diem2D) { };
xuat3(SDiem2D &diem2D) { };
xuat4(SDiem2D *diem2D) { };
D liu kiu cu trc
22
VC
&
BB
Hp nht union
Khi nim
c khai bo v s dng nh cu trc
Cc thnh phn ca union c chung a ch
u (nm chng ln nhau trong b nh)
Khai bo
union <tn kiu union>
{
<kiu d liu> <tn thnh phn 1>;
23
VC
&
BB
V d
struct SMyStruct
{
char c;
int n;
} s;
union UMyUnion
{
char c;
int n;
} u;
s.c = 1; s.n = 2;
u.c = 1; u.n = 2;
0 1 2 3 4
01 02 00 00 00
c
0 1 2 3
02 00 00 00
01
c
n
D liu kiu cu trc
24
VC
&
BB
V d
25
VC
&
BB
V d
26
VC
&
BB
Bi tp
Phn s
Khai bo kiu d liu phn s (SPhanSo)
Nhp/Xut phn s
Rt gn phn s
Tnh tng, hiu, tch, thng hai phn s
Kim tra phn s ti gin
Quy ng hai phn s
Kim tra phn s m hay dng
So snh hai phn s
D liu kiu cu trc
27
VC
&
BB
Bi tp
n thc
Khai bo kiu d liu n thc (SDonThuc)
Nhp/Xut n thc
Tnh tch, thng hai n thc
Tnh o hm cp 1 ca n thc
Tnh o hm cp k ca n thc
Tnh gi tr n thc ti x = x0
28
VC
&
BB
Bi tp
a thc
Khai bo kiu d liu a thc (SDaThuc)
Nhp/Xut a thc
Tnh tng, hiu, tch hai a thc
Tnh o hm cp 1 ca a thc
Tnh o hm cp k ca a thc
Tnh gi tr n thc ti x = x0
29
VC
&
BB
Bi tp
VC
&
BB
Bi tp
Ngy
Khai bo kiu d liu ngy (SNgay)
Nhp/Xut ngy (ngy, thng, nm)
Kim tra nm nhun
Tnh s th t ngy trong nm
Tnh s th t ngy k t ngy 1/1/1
Tm ngy trc , sau k ngy
Tnh khong cch gia hai ngy
So snh hai ngy
D liu kiu cu trc
31
VC
&
BB
Bi tp
Mng phn s
Nhp/Xut n phn s
Rt gn mi phn s
m s lng phn s m/dng trong mng
Tm phn s dng u tin trong mng
Tm phn s nh nht/ln nht trong mng
Sp xp mng tng dn/gim dn
32
VC
&
BB
Bi tp
Mng im
Nhp/Xut n im
m s lng im c honh dng
m s lng im khng trng vi cc im
khc trong mng
Tm im c honh ln nht/nh nht
Tm im gn gc ta nht
33