Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Từ đối xứng trong chuỗi Mon Mar 07, 2011 7:53 pm | |
| | Mon Mar 07, 2011 7:53 pm Từ đối xứng trong chuỗi | | | - Code:
-
#include <stdio.h> #include <string.h> #include <conio.h> #include <malloc.h> #define Max 1001 typedef char SDX[Max]; bool LaDX(char *S); SDX *ChuoiDX(char *S, int *Dem); void main() { char a[Max]; SDX *s; int dem; /* O day,ta se hieu la *s la mang 1 chieu co kieu la SDX Tuc cac phan tu cua mang nay co kieu SDX, moi phan tu la mot chuoi */ fflush(stdin); printf("Nhap chuoi: "); gets(a); s=ChuoiDX(a,&dem); printf("Chuoi con doi xung:\n"); for(int i=0;i<dem;i++) printf("%s\n",s[i]); getch(); } bool LaDX(char *S,int K1,int K2) { for(int i=0;i<(K2-K1)/2;i++) if(S[K1+i]!=S[K2 -1 -i]) return false; return true; } SDX *ChuoiDX(char *S, int *Dem) { SDX *t; *Dem=0; int i=0,j=0,len= strlen(S),k1,k2; //Tim so luong phan tu cua mang t while(i<len) // Xet toan bo chuoi { //Xet khi gap ky tu khoang trang while(S[i]==' '&&i<len) i++; k1=i;// lay vi tri dau tien cua tu //Xet khi gap ky tu khong phai khoang trang while(S[i]!=' '&&i<len) i++; k2=i;// Lay vi tri cuoi+1 cua tu if(k2!=k1&&LaDX(S,k1,k2)) (*Dem)++; } // Cap phat dong cho t t=(SDX *)malloc((*Dem)*sizeof(SDX)); //Tim chuoi doi xung cho vao mang t i=0; while(i<len) // Xet toan bo chuoi { //Xet khi gap ky tu khoang trang while(S[i]==' '&&i<len) i++; k1=i; //Xet khi gap ky tu khong phai khoang trang while(S[i]!=' '&&i<len) i++; k2=i; if(k2!=k1&&LaDX(S,k1,k2)) { memcpy(t+j,S+k1,k2-k1+1); t[j][k2-k1+1]='\0'; j++; } } return t; } Tboy
| | | | | |
|