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  

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 : 26
Đế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 

 Similar topics

-
» Các Chỉ Số ( Stat ) Cơ Bản Trong Game
» Tìm Hiểu Về Thơ Đường luật
» Bảng nội qui club VietNamLoveLy.
» Hướng dẫn cách Refer Friend
» CHỮ VIỆT MỚI TỐI GIẢN
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-