09-mang va xau ki tu
DESCRIPTION
Tin Dai CuongTRANSCRIPT
-
1TRNG I HC BCH KHOA H NIVIN CNG NGH THNG TIN V TRUYN THNG
TIN HC I CNGBi 9. Mng v xu k t
Ni dung
9.1. Mng
9.2. Xu k t
2
Ni dung
9.1. Mng
9.1.1. Khi nim mng
9.1.2. Khai bo v s dng mng
9.1.3. Cc thao tc c bn trn mng
9.1.4. Tm kim trn mng
9.1.5. Sp xp trn mng
9.2. Xu k t
3
9.1.1. Khi nim mng
Tp hp hu hn cc phn t cng kiu, lu tr k tip nhau trong b nh
Cc phn t trong mng c cng tn (l tn mng) nhng phn bit vi nhau ch s cho bit v tr ca n trong mng
V d:
Bng im ca sinh vin
Vector
Ma trn
4
-
29.1.2. Khai bo v s dng mng
Khai bo mng (mt chiu)kiu_d_liu tn_mng [kch_thc_mng];
Trong
kiu_d_liu: kiu d liu ca cc phn t trong mng
tn_mng: tn ca mng
kch_thc_mng: s phn t trong mng
V d
int mang_nguyen[10]; // khai bo mng 10 phn t c kiu d liu int
5
9.1.2. Khai bo v s dng mng
Cp pht b nh
Cc phn t trong mng c cp pht cc nh k tip nhau trong b nh
Bin mng lu tr a ch nh u tin trong vng nh c cp pht
Ngn ng C nh ch s cc phn t trong mng bt u t 0
Phn t th i trong mang_nguyen c xc nh bi mang_nguyen[i-1]
6
mang_nguyen[0] mang_nguyen[1] .. mang_nguyen[9]
mang_nguyen
9.1.2. Khai bo v s dng mng
Mng mt chiu v mng nhiu chiu
Mi phn t ca mng cng l mt mng
=> mng nhiu chiu
V d
int a[6][5] ; //mng 2 chiu
int b[3][4][5]; // mng 3 chiu
7
9.1.2. Khai bo v s dng mng
Khai bo mt bin mng
kiu_d_liu tn_mng[size1][size2][sizek];
Trong
sizei l kch thc chiu th i ca mng
8
-
39.1.2. Khai bo v s dng mng
S dng mng
Truy cp vo phn t thng qua tn mng v ch s ca phn t trong mng
tn_mng[ch_s_phn_t]
Ch : ch s bt u t 0
V d
int a[4];
phn t u tin (th nht) ca mng: a[0]
phn t cui cng (th t) ca mng: a[3]
a[i]: l phn t th i+1 ca a9
9.1.2. Khai bo v s dng mng
V d (tip)
int b[3][4];
phn t u tin ca mng: b[0] l mt mng mt chiu
phn t u tin ca mng b[0]: b[0][0]
b[i][j]: l phn t th j+1 ca b[i], b[i] l phn t th i+1 ca b
10
9.1.3. Cc thao tc c bn trn mng
a. Nhp d liu cho mng
Khi to gi tr cho mng ngay khi khai bo
Ging vi?
int a[4] = {1,4,6,2};
int b[2][3]={ {1,2,3}, {4,5,6} }:
S lng gi tr khi to khng c ln hn s lng phn t trong mng
Nu s lng ny nh hn, cc phn t cn li c khi to gi tr 0
11
9.1.3. Cc thao tc c bn trn mng
a. Nhp d liu cho mng
C th xc nh kch thc mng thng qua s gi tr khi to nu trng kch thc mng
int array1 [8] = {2, 4, 6, 8, 10, 12, 14, 16};
int array2 [] = {2, 4, 6, 8, 10, 12, 14, 16};
12
-
49.1.3. Cc thao tc c bn trn mng
a. Nhp d liu cho mng
Nhp d liu t bn phm bng hm scanf
int a[10];
Nhp d liu cho a[1]: scanf(%d, & a[1]);
Nhp d liu cho ton b phn t ca mng a
=> S dng vng lp for
Lu
Tn mng l mt hng (hng con tr) do khng th thc hin php ton vi tn mng nh php gn sau khi khai bo
13
9.1.3. Cc thao tc c bn trn mng
#include #define MONTHS 12int main(){
int rainfall[MONTHS], i;for ( i=0; i < MONTHS; i++ ){
printf(Nhap vao phan tu thu %d: , i+1);
scanf("%d", &rainfall[i] );} return 0;
}
14
9.1.3. Cc thao tc c bn trn mng
a. Nhp d liu cho mng
Lu
Nu s phn t ca mng c nhp t bn phm v ch bit trc s phn t ti a ti a => khai bo mng vi kch thc ti a v s dng bin lu s phn t thc s ca mng.
V d: Khai bo mng s nguyn a c ti a 100 phn t. Nhp t bn phm s phn t trong mng v gi tr cc phn t .
15
9.1.3. Cc thao tc c bn trn mng
#include
#include
void main(){
int a[100];
int n, i;
do{
printf(\n Cho biet so phan tu cua mang: );
scanf(%d,&n);
}while (n>100||n
-
59.1.3. Cc thao tc c bn trn mng
b. Xut d liu trong mng
Dng hm printf()
hin th tt c cc phn t: dng vng for
V d
Hin th mt phn t bt k
Hin th tt c cc phn t, mi phn t trn mt dng
Hin th tt c cc phn t trn mt dng, cch nhau 2 v tr
Hin th tng k phn t trn mt dng
17
9.1.3. Cc thao tc c bn trn mng
#include #define MONTHS 12int main(){
int rainfall[MONTHS], i;for ( i=0; i < MONTHS; i++ ){
printf(Nhap vao phan tu thu %d: , i+1);
scanf("%d", &rainfall[i] );} for ( i=0; i < MONTHS; i++ )
printf( "%2d , rainfall[i]);printf("\n");
return 0;}
18
9.1.3. Cc thao tc c bn trn mng
c. Tm gi tr ln nht, nh nht
Tm gi tr ln nht
Gi s phn t l phn t u tin
Ln lt so snh vi cc phn t cn li
Nu ln hn hoc bng => so snh tip
Nu nh hn => coi phn t ny l phn t ln nht v tip tc so snh
Cch lm?
Tm gi tr nh nht: tng t
19
9.1.3. Cc thao tc c bn trn mng
max = rainfall[0];
for(i = 1; i < n; i++)
if(max < a[i])
max = a[i];
printf("\n Luong mua nhieu nhat la: %d", max);
20
-
69.1.4. Tm kim trn mng
Bi ton
Cho mng d liu a v mt gi tr k
Tm cc phn t trong mng a c gi tr bng (ging) vi k. Nu c in ra v tr (ch s) cc phn t ny. Ngc li thng bo khng tm thy
Cch lm
Duyt ton b cc phn t trong mng
Nu a[i] bng (ging) k th lu li ch s i
S dng mt bin xc nh tm thy hay khng tm thy
21
9.1.4. Tm kim trn mng
Phn tch
Duyt ton b cc phn t
Vng lp for (while, do while)
Lu li i nu a[i] bng (ging) k
S dng mng lu ch s
Bin xc nh tm thy hay khng tm thy
Bin nhn gi tr 0 hoc 1
Bin nhn gi tr 0 hoc >=1 (tm thy th tng gi tr)
22
9.1.4. Tm kim trn mng
#include
#include
void main(){
int a[100], chi_so[100];
int n;//n la s phn t trong mng
int i, k, kiem_tra;
printf( Nhap vao so phan tu cua mang: );
scanf(%d,&n);
printf(Nhap vao gi tr tim kiem);
scanf(%d,&k); 23
9.1.4. Tm kim trn mng
kiem_tra = 0;
// Duyt qua tt c cc phn t
for(i = 0;i
-
79.1.4. Tm kim trn mng
if(kiem_tra > 0){
printf(Trong mang co %d phan tu co gia tri bang %d,kiem_tra,k);
printf(\nChi so cua cac phan tula:);
for(i = 0;i < kiem_tra;i++)
printf(%3d,chi_so[i]);
} else
printf(\n Trong mang khong co phan tu nao co gia tri bang %d,k);
getch();}
25
9.1.5. Sp xp mng
Bi ton
Cho mng a gm n phn t. Sp xp cc phn t ca mng a theo th t tng dn/gim dn
26
9.1.5. Sp xp mng
Gii thut sp xp
Sp xp thm dn (insertion sort)
Sp xp la chn (selection sort)
Sp xp ni bt (bubble sort)
Sp xp vun ng (heap sort)
Sp xp nhanh (quick sort)
Sp xp trn (merge sort)
.
27
9.1.5. Sp xp mng
Gii thut sp xp la chn
Tm phn t nh nht cha c sp xp trong mng
i ch n vi phn t u tin trong phn cha c sp
28
-
89.1.5. Sp xp mng
tng
Ln sp xp th 1
So snh a[0] vi cc a[i], i = 1..n-1
a[0] > a[i] => i ch a[0] v a[i]
Thu c a[0] l phn t nh nht
Ln sp xp th 2
So snh a[1] vi cc a[i], i = 2..n-1
a[1] > a[i] => i ch a[1] v a[i]
Thu c a[1] l phn t nh th 2
29
9.1.5. Sp xp mng
tng
Ln sp xp th k
So snh a[k-1] vi cc a[i], i = k..n-1
a[k-1] > a[i] => i ch a[k-1] v a[i]
Thu c a[k-1] l phn t nh th k
..
Ln sp xp th n-1
So snh a[n-2] v a[n-1]
a[n-2] > a[n-1] => i ch a[n-2] v a[n-1]
Thu c a[n-2] l phn t nh th n-1 => cn li a[n-1] l phn t nh th n (ln nht)
30
9.1.5. Sp xp mng
A = { 12, 5, 3, 4 };
Lt 1 Lt 2 Lt 3
12 3 3 35 12 4 4
3 5 12 54 4 5 12
31
9.1.5. Sp xp mng
//Khai bao cac bienint a[100];int i, j, temp;
//Sap xepfor (i = 0; i < n-1; i++){
for (j = i+1; j a[j]){
tmp = a[i];a[i]= a[j];a[j]= tmp;
} 32
-
99.1.5. Sp xp mng
V d
Nhp vo t bn phm mt mng s nguyn m trong s phn t cng c nhp t bn phm
Hin th cc phn t va c nhp vo
Sp xp mng m theo th t tng dn trong c hin th cc phn t trong mi lt sp xp.
33
9.1.5. Sp xp mng
#include
#include
void main(){
int m[100];
int n; // n la s phn t trong mng
int i, j, k;
// Nhp gi tr d liu cho mng m
printf( Cho biet so phan tu co trong mang: );
scanf(%d,&n);
34
9.1.5. Sp xp mng
// nhp gi tr cho cc phn t
for(i = 0;i
-
10
Ni dung
9.1. Mng
9.2. Xu k t
9.2.1. Khi nim xu k t
9.2.2. Khai bo v s dng xu
9.2.3. Cc hm x l k t
9.2.4. Cc hm x l xu
37
9.2.1. Khi nim xu k t
Xu k t (string) l mt dy cc k t vit lin tip nhau
di xu l s k t c trong xu
Xu rng l xu khng c k t no
V d: Tin hoc, String
Lu tr: kt thc xu bng k t \0 hay NUL (m ASCII l 0)
38
T i n h o c \0
9.2.1. Khi nim xu k t
So snh
Xu k t v mng k t?
Tp hp cc k t vit lin tip nhau
S khc bit: xu k t c k t kt thc xu, mng k t khng c k t kt thc xu
Xu k t A v k t A?
A l 1 k t
A l 1 xu k t, ngoi k t A cn c k t \0 => gm 2 k t
39
9.2.2. Khai bo v s dng xu
a. Khai bo xu
C php
char tn_xu [s_k_t_ti_a+1];
Lu :
lu tr mt xu c n k t chng ta cn mt mng c kch thc n+1
V d
lu tr xu Tin hoc chng ta phi khai bo xu c s phn t ti a t nht l 8
char str [8];40
-
11
9.2.2. Khai bo v s dng xu
b. Truy cp vo mt phn t ca xu
C php:
tn_xu [ch_s_ca_k_t]
V d
char quequan[10];
Gi s xu ny c ni dung l Ha noi
quequan[0] lu tr H
quequan[1] a
quequan[6] i
quequan[7] \041
9.2.3. Cc hm x l k t
Tp tiu s dng: ctype.h
int toupper(int ch): chuyn k t thng thnh k t hoa
toupper(a) => A
int tolower(int ch): chuyn k t hoa thnh k t thng
tolower(B) => b
42
9.2.3. Cc hm x l k t
int isalpha(int ch): kim tra xem k t c phi ch ci hay khng (az,A,..Z)
int isdigit(int ch): kim tra ch s (0,1,..9)
int islower(int ch): kim tra ch thng
int isupper(int ch): kim tra ch hoa
int iscntrl(int ch): kim tra k t iu khin (0-31)
int isspace(int ch): kim tra k t du cch (m 32), xung dng (\n 10), u dng (\r 13), tab ngang (\t 9), tab dc (\v 11)
tr v khc 0 nu ng, ngc li tr v 043
9.2.3. Cc hm x l k t
#include
#include
#include
void main(){
char ch;
printf(Nhap vao mot ki tu: );
scanf(%c, &ch);
44
-
12
9.2.3. Cc hm x l k t
if(isupper(ch)){
printf(Ki tu nay la chu hoa\n);
printf(Ki tu chu thuong tuong ung %c\n,tolower(ch));
}else if(islower(ch)){
printf(Ki tu nay la chu thuong\n);
printf(Ki tu chu hoa tuong ung %c\n,toupper(ch));
}
getch();
}45
9.2.3. Cc hm x l k t
Vo ra xu k t
Tp tiu : stdio.h
Nhp xu k t
gets(tn_xu);
scanf(%s,&tn_xu);
Hin th xu k t
puts(tn_xu);
printf(%s,tn_xu);
S khc nhau gia gets v scanf?
46
9.2.4. Cc hm x l xu k t
Tp tiu : string.h
size_t strlen(char[] tn_xu): tr v di xu
char[] strcpy(char[] xu_ch, char[]xu_ngun): sao chp xu
int strcmp(char[] xu_th_nht, char[]xu_th_hai): so snh hai xu
gi tr 0 : hai xu ging nhau
gi tr0: xu th nht ln hn xu th hai47
9.2.4. Cc hm x l xu k t
char[] strcat(char[] xu_ch, char[]xu_ngun): ghp ni xu ngun vo ngay sau xu ch
Tp tiu : stdlib.h
int atoi(char[] str): chuyn mt xu k t thnh mt s nguyn tng ng
int atol(char[] str): chuyn thnh s long int
float atof(char[] str): chuyn thnh s thc
Khng thnh cng c 3 hm: tr v 0
48
-
13
9.2.4. Cc hm x l xu k t
#include
#include
#include
void main(){
clrscr();
char str1[10] = abc;
char str2[10] = def;
printf( str1: %s,str1);
printf(\n str2: %s,str2);
printf(\n strcmp(str1,str2)= %d, strcmp(str1,str2)); 49
9.2.4. Cc hm x l xu k t
printf(\n strcpy(str1,str2) = %s, strcpy(str1,str2));
printf( str1: %s,str1);
printf(\n str2: %s,str2);
strcpy(str1,ab);strcpy(str2,abc);
printf( str1: %s,str1);
printf(\n str2: %s,str2);
printf(\n strcmp(str1,str2) = %d, strcmp(str1,str2));
getch();
}50
Tho lun
51