09-mang va xau ki tu

Upload: quy-hoang

Post on 29-Feb-2016

11 views

Category:

Documents


0 download

DESCRIPTION

Tin Dai Cuong

TRANSCRIPT

  • 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