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