chuan hoa ten va sx thu tu

Màu nền
Font chữ
Font size
Chiều cao dòng

Bai tap chuan hoa+sap xep thu tu

#include <stdio.h>

#include <conio.h>

#include <string.h>

char ten[100][40], nho[40];

int i, j, n;

void nhap_ten();

void xoa_ki_tu(char *xau, int vi_tri, int so_luong);

void chuan_hoa_ten();

char *dao_ten(char *xau);

void sap_xep();

void hien_thi();

int main()

{

    nhap_ten();

    chuan_hoa_ten();

    sap_xep();

    hien_thi();

}

void nhap_ten()        //Ham nhap danh sach ten nguoi

{

    printf("Nhap so luong ten nguoi: ");

    scanf("%d", &n);

    fflush(stdin);

    for (i=0; i<n; i++)

    {

        printf("Nhap ten nguoi thu %d: ", i+1);

        gets(ten[i]);

    }

}

void xoa_ki_tu(char *xau, int vi_tri, int so_luong)      //Ham xoa ki tu cua chuoi

{

    if (vi_tri+so_luong-1 > strlen(xau))

        xau[0]='\0';

    else

    {

        while(xau[vi_tri+so_luong] != '\0')

        {

            xau[vi_tri]= xau[vi_tri+so_luong];

            vi_tri++;

        }

        xau[vi_tri]= '\0';

    }

}

void chuan_hoa_ten()    //Ham chuan hoa ten

{

    for (i=0; i<n; i++)

    {

        j= 1;

        while (j< strlen(ten[i]))

            if (ten[i][j]==' ' && ten[i][j-1]==' ')

                xoa_ki_tu(ten[i],j,1);

            else j++;

        if (ten[i][0]== ' ')

            xoa_ki_tu(ten[i],0,1);

        if (ten[i][strlen(ten[i])-1] == ' ')

            xoa_ki_tu(ten[i], strlen(ten[i])-1, 1);

        for (j=0; j<strlen(ten[i]); j++)

        {

            if ((ten[i][j]>='A') && (ten[i][j]<='Z') && (ten[i][j-1]!= ' '))

                ten[i][j] +=32;

            if ((ten[i][j]>='a') && (ten[i][j]<='z') && (j== 0 || ten[i][j-1]==' '))

                ten[i][j] -= 32;

        }

    }

}

char *dao_ten(char *xau)    //Ham dao ten len vi tri dau de so sanh

{

    int max;

    max= strlen(xau)-1;

    while (xau[max]!=' ')

        max--;

    strncpy(nho, xau+max+1, strlen(xau)-max);  //Copy phan ten vao bien nho

    strcat(nho, " ");     

    strncat(nho, xau, max);   

    return nho;

}

void sap_xep()      //Ham sap xep ten

{

    char xau[40];

    for (i=0; i<n-1; i++)

        for (j=i+1; j<n; j++)

        {

            strcpy(xau, dao_ten(ten[i]));

            if (strcmp(xau, dao_ten(ten[j]))>0)

            //Doi cho chuoi ten[i] va ten[j]

            {

                strcpy(nho, ten[i]);

                strcpy(ten[i], ten[j]);

                strcpy(ten[j], nho);

            }

        }

}

void hien_thi()        //Hien thi ket qua sau khi sap xep

{   

    printf("Ten sau khi sap xep:

");

    for (i=0; i<n; i++)

        printf("%s

", ten[i]);

    getch();

}

Bạn đang đọc truyện trên: Truyen2U.Pro

#linhkute