Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Hãy sử dụng FireFox để web hiển thị tốt hơn!


Share | 
 

 Từ đối xứng trong chuỗi

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Tboy
Cá voi
Cá voi
avatar


Nam Tổng số bài gửi : 178
Cảm ơn : 413
Danh vọng : 4
Join date : 03/01/2011
Age : 25
Đến từ : TPHCM

Bài gửiTiê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



Về Đầu Trang Go down
Xem lý lịch thành viên http://taplaptrinh.forumvi.com
 

Từ đối xứng trong chuỗi

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Cơ sở lập trình 1 :: Bài tập thực hành-