Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Về chuẩn hóa văn bản

  1. #1
    Ngày gia nhập
    09 2009
    Bài viết
    240

    Mặc định Về chuẩn hóa văn bản

    Mình mới code một số hàm để chuẩn hóa xâu văn bản. Mình đưa ra để cùng trao đổi nhé.
    C++ Code:
    1. #include <stdio.h>
    2.  
    3. #define distance 'a'-'A'
    4. #define space 32
    5. #define comma ','
    6. #define dot '.'
    7. #define colon ':'
    8. #define question '?'
    9. #define factorial '!'
    10. #define semicolon ';'
    11. #define ellipsis "..."
    12.  
    13. int isspecialchr(char ch)
    14. {
    15.     return  ch == comma || ch == dot || ch == colon ||
    16.             ch == question || ch == factorial || ch == semicolon;
    17. }
    18.  
    19. int nonupper(char ch)
    20. {
    21.     return  ch == comma || ch == semicolon;
    22. }
    23.  
    24. int islower(char ch)
    25. {
    26.     return  'a' <= ch && ch <= 'z';
    27. }
    28.  
    29. void append(char *sptr, char * &dptr)
    30. {
    31.     *dptr = *sptr;
    32.     dptr ++;
    33. }
    34.  
    35. int isellipsis(char *s)
    36. {
    37.     return  *s == dot && *(s+1) == dot && *(s+2) == dot;
    38. }
    39.  
    40. int ispunctuation(char ch)
    41. {
    42.     return ch == dot || ch == question || ch == factorial;
    43. }
    44. void addellipsis(char * &sptr, char * &dptr)
    45. {
    46.     if (*(dptr-1) == space) dptr--;
    47.     *dptr = *(dptr+1) = *(dptr+2) = dot;
    48.     dptr +=3; sptr +=2;
    49. }
    50.  
    51. char * strstd(char *src, char *dest)
    52. {
    53.     char * sptr = src, *dptr = dest;
    54.     while (*sptr)
    55.         {
    56.             if (isellipsis(sptr)) addellipsis(sptr,dptr);  
    57.             else
    58.             if (*sptr == space)
    59.                 {
    60.                     if (dptr > dest && *(dptr-1) != *sptr)
    61.                         append(sptr,dptr);
    62.                 }
    63.             else
    64.                 if (isspecialchr(*sptr))
    65.                     {
    66.                         if (dptr > dest)
    67.                             if (!isspecialchr(*(dptr-1)))
    68.                                 if (*(dptr-1) == space) *(dptr-1) = *sptr;
    69.                                 else append(sptr,dptr);
    70.                     }
    71.                 else
    72.                     {
    73.                         if (isspecialchr(*(dptr-1)))
    74.                             {
    75.                                 *dptr = space; dptr++;
    76.                             }
    77.                         *dptr = *sptr;
    78.                         if (dptr == dest || isspecialchr(*(dptr-2)) && !nonupper(*(dptr-2)))
    79.                             if (islower(*dptr)) *dptr -= distance;
    80.                         dptr ++;
    81.                     }
    82.             sptr++;
    83.         }
    84.  
    85.     dptr--;
    86.     while (isspecialchr(*dptr) && !ispunctuation(*dptr) || *dptr == space) dptr--;
    87.     if (!ispunctuation(*dptr)) {*(dptr+1) = dot; *(dptr+2) = 0;}
    88.     else *(dptr + 1) =0;
    89.  
    90.     return dest;
    91. }
    92.  
    93. void main()
    94. {
    95.     char dest[100];
    96.     char src1[100] = "  em hoi   anh :hom qua  di  dau  ???   anh  noi rang   anh   di giang cau ...  ";
    97.     printf("\n%s\n",strstd(src1, dest));
    98.     char src2[100] = "  ga gay ,,, troi   sang   ;;; onmimh  tinh   day  ,,,  code c++  ";
    99.     printf("\n%s\n",strstd(src2, dest));
    100.    
    101.     char src3[100] = "  sao anh  lai ngo  loi    vao mot dem trang khuyet ? ";
    102.     printf("\n%s\n",strstd(src3, dest));
    103.  
    104.     char src4[100] = "  de    bay gio    tham   tiec ...mot vang trang khong tron ! ,,,,";
    105.     printf("\n%s\n",strstd(src4, dest));
    106. }
    Kết quả chạy sẽ ra như sau:
    PHP Code:
    Em hoi anhHom qua di dauAnh noi rang anh di giang cau...

    Ga gaytroi sangonmimh tinh daycode c++.

    Sao anh lai ngo loi vao mot dem trang khuyet?

    De bay gio tham tiec... Mot vang trang khong tron
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    cái ... khó cắt nghĩa quá thầy ơi
    có lúc sau ... là viết hoa
    có lúc thì ko phải
    theo ý kiến của e thì giữ nguyên hiện trạng sau ... thì ổn hơn

    ví dụ:

    PHP Code:
    vân anh ơianh ... yêu em// không logic lắm nhưng lại có thật trong sử dụng 
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    825

    Trích dẫn Nguyên bản được gửi bởi onminh Xem bài viết
    Mình mới code một số hàm để chuẩn hóa xâu văn bản. Mình đưa ra để cùng trao đổi nhé.
    C++ Code:
    1. #include <stdio.h>
    2.  
    3. #define distance 'a'-'A'
    4. #define space 32
    5. #define comma ','
    6. #define dot '.'
    7. #define colon ':'
    8. #define question '?'
    9. #define factorial '!'
    10. #define semicolon ';'
    11. #define ellipsis "..."
    12.  
    13. int isspecialchr(char ch)
    14. {
    15.     return  ch == comma || ch == dot || ch == colon ||
    16.             ch == question || ch == factorial || ch == semicolon;
    17. }
    18.  
    19. int nonupper(char ch)
    20. {
    21.     return  ch == comma || ch == semicolon;
    22. }
    23.  
    24. int islower(char ch)
    25. {
    26.     return  'a' <= ch && ch <= 'z';
    27. }
    28.  
    29. void append(char *sptr, char * &dptr)
    30. {
    31.     *dptr = *sptr;
    32.     dptr ++;
    33. }
    34.  
    35. int isellipsis(char *s)
    36. {
    37.     return  *s == dot && *(s+1) == dot && *(s+2) == dot;
    38. }
    39.  
    40. int ispunctuation(char ch)
    41. {
    42.     return ch == dot || ch == question || ch == factorial;
    43. }
    44. void addellipsis(char * &sptr, char * &dptr)
    45. {
    46.     if (*(dptr-1) == space) dptr--;
    47.     *dptr = *(dptr+1) = *(dptr+2) = dot;
    48.     dptr +=3; sptr +=2;
    49. }
    50.  
    51. char * strstd(char *src, char *dest)
    52. {
    53.     char * sptr = src, *dptr = dest;
    54.     while (*sptr)
    55.         {
    56.             if (isellipsis(sptr)) addellipsis(sptr,dptr);  
    57.             else
    58.             if (*sptr == space)
    59.                 {
    60.                     if (dptr > dest && *(dptr-1) != *sptr)
    61.                         append(sptr,dptr);
    62.                 }
    63.             else
    64.                 if (isspecialchr(*sptr))
    65.                     {
    66.                         if (dptr > dest)
    67.                             if (!isspecialchr(*(dptr-1)))
    68.                                 if (*(dptr-1) == space) *(dptr-1) = *sptr;
    69.                                 else append(sptr,dptr);
    70.                     }
    71.                 else
    72.                     {
    73.                         if (isspecialchr(*(dptr-1)))
    74.                             {
    75.                                 *dptr = space; dptr++;
    76.                             }
    77.                         *dptr = *sptr;
    78.                         if (dptr == dest || isspecialchr(*(dptr-2)) && !nonupper(*(dptr-2)))
    79.                             if (islower(*dptr)) *dptr -= distance;
    80.                         dptr ++;
    81.                     }
    82.             sptr++;
    83.         }
    84.  
    85.     dptr--;
    86.     while (isspecialchr(*dptr) && !ispunctuation(*dptr) || *dptr == space) dptr--;
    87.     if (!ispunctuation(*dptr)) {*(dptr+1) = dot; *(dptr+2) = 0;}
    88.     else *(dptr + 1) =0;
    89.  
    90.     return dest;
    91. }
    92.  
    93. void main()
    94. {
    95.     char dest[100];
    96.     char src1[100] = "  em hoi   anh :hom qua  di  dau  ???   anh  noi rang   anh   di giang cau ...  ";
    97.     printf("\n%s\n",strstd(src1, dest));
    98.     char src2[100] = "  ga gay ,,, troi   sang   ;;; onmimh  tinh   day  ,,,  code c++  ";
    99.     printf("\n%s\n",strstd(src2, dest));
    100.    
    101.     char src3[100] = "  sao anh  lai ngo  loi    vao mot dem trang khuyet ? ";
    102.     printf("\n%s\n",strstd(src3, dest));
    103.  
    104.     char src4[100] = "  de    bay gio    tham   tiec ...mot vang trang khong tron ! ,,,,";
    105.     printf("\n%s\n",strstd(src4, dest));
    106. }
    Kết quả chạy sẽ ra như sau:
    PHP Code:
    Em hoi anhHom qua di dauAnh noi rang anh di giang cau...

    Ga gaytroi sangonmimh tinh daycode c++.

    Sao anh lai ngo loi vao mot dem trang khuyet?

    De bay gio tham tiec... Mot vang trang khong tron
    Code chưa biết chạy chuẩn không ,nhưng bố cục thì. Duy nhất thiếu 1 điều là comment cho người đọc còn hiểu code. Nếu không có ,thì ngồi đọc và nghĩ đến mùa quýt mất.

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Bạn onminh có cách đặt tên hàm và biến rất tốt mà, với lại code này cũng ngắn, bạn chỉ cần bỏ chút thời gian là đọc hiểu thôi !

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi Tadius Xem bài viết
    Code chưa biết chạy chuẩn không ,nhưng bố cục thì. Duy nhất thiếu 1 điều là comment cho người đọc còn hiểu code. Nếu không có ,thì ngồi đọc và nghĩ đến mùa quýt mất.
    code của t.onminh còn trong sáng hơn code của langman nhiều
    thảo nào mà code của langman bị taduis chê lên chê xuống
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    09 2009
    Bài viết
    240

    Mặc định Về chuẩn hóa văn bản

    Trích dẫn Nguyên bản được gửi bởi Tadius Xem bài viết
    Code chưa biết chạy chuẩn không ,nhưng bố cục thì. Duy nhất thiếu 1 điều là comment cho người đọc còn hiểu code. Nếu không có ,thì ngồi đọc và nghĩ đến mùa quýt mất.
    Như r_r nói đúng đó,cám ơn r_r. Mình đã cố ý đặt tên hàm, tên biến sao cho gợi nhớ, các câu lệnh tỷ mỉ thì minh gói nó vào một hàm. Đọc code của mình gần giống như đọc bằng lời, thiết nghĩ không nên comment nữa. Nhưng dầu sao cũng cám ơn vì đã quan tâm.

  7. #7
    Ngày gia nhập
    09 2009
    Bài viết
    240

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    cái ... khó cắt nghĩa quá thầy ơi
    có lúc sau ... là viết hoa
    có lúc thì ko phải
    theo ý kiến của e thì giữ nguyên hiện trạng sau ... thì ổn hơn

    ví dụ:

    PHP Code:
    vân anh ơianh ... yêu em// không logic lắm nhưng lại có thật trong sử dụng 
    Có lẽ thế, vì khó diễn tả nên mới "...", nó còn phụ thuộc tâm trạng của người sẽ đọc. À vừa qua bồ cũ đến chơi có ... không? (Chỗ này viết hoa sao được, hix). Mình về ăn cơm rồi chiều đi công tác xa đây, có lẽ không offline được, tiếc lắm.

  8. #8
    Ngày gia nhập
    03 2010
    Bài viết
    41

    Tham khảo đi nhé


    Code:
    //--------- Chuong trinh xu ly van ban dung danh sach lien ket -----------
    //----------- Thao tac tren ky tu chu ,dau cham ,khoang trang ------------
    #include<stdio.h>
    #include<math.h>
    #include<conio.h>
    #include<string.h>
    #include<iostream.h>
    #include<ctype.h>
    //-----------------------------------------------//
    typedef char infor[100];
    struct element           // kieu ban ghi element
    { infor tu;
      element *next;         // *next la truong lien ket
    };
    typedef element *List;
    List F,K;                // F luu vi tri cua tu dau tien ,K luu dia chi cua tu cuoi cung
    infor x,xn;
    int n=0,cv;              // cv : lus chon cong viec,n :chieu dai chuoi van ban
    //-----------------------------------------------//
    void khoitao(List &F,List &K)    // Ham khoi tao
    { delete [] F;
      F=NULL;K=NULL;
      n=0;                   // Moi khoi tao n=0;
      printf("\nDa xoa van ban cu va khoi tao xong!\n");
    }
    //-----------------------------------------------//
    char* inhoa(infor x)     // con tro mang kieu char
    { char* h= new char[10]; // Cap phat vung nho cho mang h kieu char
      strcpy(h,x);
      h[0]=toupper(h[0]);    // Dinh dang chu thuong sang chu hoa o vi tri h[0]
      return h;              // Tra ve lan luot cac chu cai
    }
    //-----------------------------------------------//
    void dodai(List F)
    { List p=F;
      infor y;
      int c=0,d,lc;         // bien dem so tu co do dai la d
      if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
      else
        {
           printf("\nLua chon chuc nang can su dung: !\n");
           printf("\n-1-Tim kiem nhung tu co do dai la d nhap tu ban phim!");
           printf("\n-2-Tim kiem nhung tu co do dai bang do dai cua tu nhap tu ban phim!\n");
           do{ printf("\nNhap chuc nang dung :");
    	  scanf("%d",&lc);
    	 } while(lc<1||lc>2);
          if(lc==1) { printf("\nNhap do dai d :");
    	      scanf("%d",&d);
    	     }
          else  { printf("\nNhap tu do dai bat ki:");
    		fflush(stdin);
    		gets(y);
    	       d=strlen(y);
    	    }
    
          printf("\nNhung tu co do dai %d:\n",d);
    	    while(p!=NULL)
    	      {  if((strlen((*p).tu)==d)&&(strcmp((*p).tu,"."))&&strcmp((*p).tu," ")) // tu co do dai bang d va khong phai dau cham va khoang trang
    		 { printf("\n");
    		   puts((*p).tu); // Lenh xuat tu co do dai la d
    		   c++;
    		 }
    		 p=(*p).next;     // Tiep tuc tim
    	      }
    	if(c==0) printf("\nKhong co tu nao co do dai la %d\n",d);
    	else printf("\nTong cong co %d tu\n",c);
         }
    }
    //----------------------------------------------//
    void chen(List &F,List &K,infor x)   //chen vao sau
    { List p;
      p=new element;      // cap phat vung nho cho bien p kieu List
      strcpy((*p).tu,x);
      (*p).next=NULL;     // p chi den NULL
      if(F==NULL)  F=p; //  neu van ban khong co phan tu thi gan F=p
      else (*K).next=p;
      K=p;                // K la dia chi cua ky tu cuoi cung
      n++;                // tang n len 1 don vi tinh
    }
    //------------------------------------------//
    void chenbatki(List &F,infor x,int vt) // chen vao sau vi tri da chon
    {	List p,t;   // p la con tro chi den vi tri can them vao sau no
    	p=F;
    	int i;
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{	t= new element;         // cap phat vung nho cho bien t kieu List
    		strcpy((*t).tu,x);      // Gan x vao (*t).tu de luu tru
    		if(vt==0)		// Neu them tu vao vi tri dau tien
    		{	if(strcmp(x,".")==0) // van ban bat dau bang chu cai
    			   { printf("\nKhong hop le voi cu phap van ban!\n");
    			     delete t; //Neu la dau cham la khong chen vao dau van ban
    			   }
    			else
    			{
    			       (*t).next=(*p).next; // Nguoc lai chen vao
    				(*p).next=t;        // p la phan tu dau chi den phan tiep theo
    				n++;                // tang chieu dai n len 1 don vi
    			}
    		}
    		if(vt<n-1)
    		 {  while(vt>0) //dua p den vi tri vt ( duoc tinh tu vi tri thu 0)
    			{ p=(*p).next;
    			  vt--;
    			}
    			(*t).next=(*p).next;   // Nguoc lai chen vao
    			(*p).next=t;           // p la phan tu truoc chi den phan tiep theo
    			n++;                   // tang chieu dai n len 1 don vi
    
    		 }
    	       else   chen(F,K,x);
    	}
    }
    //----------------------------------------------//
    void chendau(List &F,infor x)
    { List p;
    p=new element;  //cap phat vung nho cho bien p kieu List
    strcpy((*p).tu,x);
    (*p).next=F;    // buoc 1
    F=p;            // buoc 2
    n++;            // tang chieu dai n len 1 don vi
    }
    //-------------------------------------------//
    int sualoi(List &F)
    { List p=F,l; // l lua dia chi cua ki tu cuoi cung
      int c; // c la bien dem thuc hien
      if(p!=NULL)
         {   while(p!=NULL)
    	      { l=p;                // dua l den vi tri cua phan tu cuoi cung
    		p=(*p).next;
    	      }
    	 if(strcmp((*l).tu,".")!=0) // so sanh xem phan tu cuoi la dau cham hay khong
    		   { c=1;
    		     chen(F,K,"."); // Neu chua thi chen vao cuoi van ban dau cham
    		    }
    	 else  c=0;          // Neu \co roi thi thoi, gan c=0 de xac nhan
          }
    
      return c;                  // Tra ve gia tri c de xac nhan cong viec
    }
    //-------------------------------------------//
    void xoadau(List &F)  // chi thuc hien khi F khac NULL
    { List p;
    if (F!=NULL)
     { p=F;         // chi den vi tri dau tien
       F=(*p).next;   // F chi den vi tri thu 2
       delete p;n--;  // xoa vung nho cua p va giam chieu dai n xuong 1 don vi
      }
    }
    //-------------------------------------------//
    void invanban(List &F)  // in theo chieu thuan
    { List p;
       p=F; // p chi den vi tri dau tien
      if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
      else
      { printf("\n");
        while((strcmp((*p).tu,".")==0)||strcmp((*p).tu," ")==0) // Neu ki tu dau tien ma "."," " thi xoa di
         { xoadau(F);
           p=(*p).next;
         }
        printf("%s",inhoa((*p).tu));      // in chu cai cua tu dau tien trong van ban
        p=(*p).next;
        while(p!=NULL)
        { if(strcmp((*p).tu,".")==0)      //gap dau cham thi in ra
           { printf("%s",".");
    	 p=(*p).next;                 //gap lien tiep dau cham cung in ra
    	 while(strcmp((*p).tu,".")==0)
    	  {  printf("%s",".");
    	       p=(*p).next;
    	   }
    	 if(p!=NULL) { printf("%s",inhoa((*p).tu));  // in hoa chu cai cua tu ke sau dau cham
    		       p=(*p).next;
    		     }
           }
           else {  printf("%s",(*p).tu); //in cac chu cai con lai cua tu binh thuong
    	       p=(*p).next;
    	    }
         }
       }
    
     }
    //-------------------------------------------//
    void khoitaovb(List &F,List &K)
    { char *luuvb; //kieu con tro mang de luu doan van ban nhap vao
      infor x;
      unsigned i=0,j;
      luuvb = new char[100];  // cap phat vung nho cho bien mang con tro luuvb kieu *char
      if(luuvb==NULL)
    	printf("\nkhong du bo nho heap de cap phat! moi quay lai!");
      else {
    	 printf("\nBat dau nhap van ban ! Nhap phim bat ki de ket thuc qua trinh nhap! \n");
    	 fflush(stdin);  //Lenh xoa bo nho dem stdin
    	 gets(luuvb);    //lenh luu sao van ban trong vung nho
    	 while(i<strlen(luuvb))  // chung nao i nho hon do dai cua mang ki tu luuvb
    	 { if(luuvb[i]==' ') { chen(F,K," "); // Doc duoc khoang trang thi chen vao dau van ban
    			       i++;
    			     }
    	   else if(luuvb[i]=='.') { chen(F,K,"."); // Hoac doc duoc dau cham thi chen vao dau van ban
    				    i++;
    				  }
    		else           // Con khong
    		   {  j=0;
    		    while((luuvb[i]!=' ')&&(luuvb[i]!='.')) // Neu ki tu thu i la ky tu thi chen vao van ban
    		     {
    			x[j]=luuvb[i]; // dung mang ki tu x de luu tung ki tu 1
    			i++;j++;
    		     } x[j]='\0';      // gan ki tu trong
    		     chen(F,K,x);      // x luc nay la tu gom cac chu cai
    		 }
    	 }
          printf("\nDa nhap xong van ban!\n");
          delete [] luuvb;  //xoa vung nho cua mang kieu char
        }
     }
    //--------------------------------------------//
    void timkiem(List F)
    {       int c=0;	//bien dem
    	List p=F;
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{	printf("\nNhap tu muon tim:");
    		fflush(stdin);
    		gets(x);
    		printf("\nKet qua tim - %s - voi cac vi tri tuong ung :\n",x);
    		while(p!=NULL)
    		{	if(strcmp((*p).tu,x)==0)  // Tim x
    			     c++;
    			     p=(*p).next;
    		}
    		if(c==0) printf("\nKhong tim thay %s trong van ban!\n",x);
    		else printf("\nTong cong %d vi tri tim dc!\n",c);
    	}
    }
    //-------------------------------------------//
    void sua(List F,infor x,int vt)  // sua tu o vi tri nhap tu ban phim
    {	List p=F;
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	if((p!=NULL)&&vt<n-1)
    	{
    		while(vt>0)      // dua con tro den tu co vi tri vt( tinh tu 0)
    			{ p=(*p).next;
    			  vt--;
    			}
    		strcpy((*p).tu,x);  // sao luu x sang
    		printf("\nDa thay doi!\n");
    	}
           else printf("\n==>Chu y vi day la dau cham cau nen khong the sua doi duoc !");
    }
    //----------------------------------------------//
    void chensautu(List &F,infor x)   // chen tu vao sau tu nhap tu ban phim
    { List p,t=F;
      infor y;
      int dem=0,vt[10],l=0,chon;  // l tat ca cac vi tri ma tu co the duoc them vao
      p=new element;
      strcpy((*p).tu,x);
      if(t==NULL)  printf("\nVan ban rong!Hay khoi tao van ban!\n");
      else {  printf("\nNhap tu dung truoc tu can chen:");
    	  fflush(stdin);
    	  gets(y);
    	  while(t!=NULL)
    	   {   dem++;
    	       if(strcmp((*t).tu,y)==0)  // Tim y trong van ban
    
    			   {  l++;  // Moi lan phat hien thi tang l len 1 don vi
    			      vt[l]=dem; // Luu vi tri tim duoc vao mang vt[10]
    			   }
    	       t=(*t).next;
    	   }
          printf("\nPhat hien %d vi tri co them %s vao:\n",l,y);
          if(l!=0)
           {
    	do{ printf("\nNhap vi thu muon chen vao sau no:");
    	 scanf("%d",&chon);
    	 if(chon<1||chon>l) printf("\nDu lieu sai!Moi nhap lai!\n");
    	}while(chon<1||chon>l);
    	chenbatki(F,x,vt[chon]-1);   // Dung ham chenbatki
           }
         else printf("\nKhong tim tu dung truoc !Khong thuc hien lenh nay duoc!\n");
       }
    }
    //-------------------------------------------//
    void xoa(List &F,int vt)
    {	List p=F,t,ph;// t de luu vi tri truoc cua doi tuong bi xoa
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{  if(vt==0) // Xoa ki tu dau tien
    		xoadau(F);
    	   if(vt!=0&&vt<n-1)  // Khong xoa ky tu cuoi cung
    		   {  while(vt>0)
    		      { t=p;
    			p=(*p).next;   // dua p den tu co vi tri vt
    			vt--;
    		      }
    		      ph=p; //vi tri xoa
    		      (*t).next=(*p).next; // luu dia chi cua vi tri vt
    		      delete ph; n--;  // xoa vung nho ph va giam n
    		  }
                else printf("\nKhong the xoa dau cham cau o cuoi van ban !");
    	}
    }
    //-------------------------------------------//
    void xoadoan_vb(List &F)  // xoa 1 doan van ban theo vi tri nhap tu ban phim
    {       int st,en,i;    // st,en la 2 vi tri bat dau va ket thuc xoa
    	List p=F;
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{ do
    	     {	printf("\nChu y vi tri nhap vao >= 1 va <= %d !\n",n);
    		printf("\nTu vi tri:");
    		scanf("%d",&st);
    		printf("\nDen vi tri:");
    		scanf("%d",&en);
    		if((st<1||st>n)||(en<1||en>n||en<st))
    		printf("\nNhap sai, hay nhap lai!");
    	     } while((st<1||st>n)||(en<1||en>n||en<st));
    	 if(en==n) en=n;
    	 for(i=0;i<=en-st;i++)
    	  xoa(F,st-1);	 // Xoa cac phan tu tu vi tri st den en
    	}
    	printf("\nDa thuc hien xong!\n");
    }
    //-------------------------------------------//
    void xoatu(List &F,infor x)
    {	List p=F,t,s=F,ph;//t,s de luu dia chi ki tu phia truoc va phia sau cua tu bi xoa
    	int c=0;//bien dem so lan thuc hien xoa
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{ while(p!=NULL)
    	    { if((strcmp((*p).tu,x)==0)&&((*p).next!=NULL))     // qua trinh phat hien
    		{ ph=p;                     // ph de luu vi tri ma phat hien thay co tu x trong van ban
    		  while((s!=NULL)&&(s!=ph)) //xac dinh dia chi cho t va s
    		    { t=s;
    		      s=(*s).next;
    		    }
    		  if(s!=NULL)                       // khong phai la tu cuoi cung
    		     { if(F==ph) F=(*ph).next;      //xoa tu dau tien
    		       else { (*t).next=(*ph).next; //con khong thi delete
    			      delete ph;
    			      n--;c++;
    			    }
    		     }
    		  }
    	      else p=(*p).next;  //tiep tuc tim
    	   }
         if(c==0) printf("\nVan ban van giu nguyen !\n");
         else printf("\nDa thuc hien xoa %d lan:\n",c);
        }
       printf("\nNhap phim bat ki de tiep tuc !\n");
    }
    //-------------------------------------------//
    void xoadoan_vb2(List &F)  // xoa 1 doan van ban theo tu nhap tu ban phim
    {  int i,k,j=0,l=0,vtd[10],vtc[10],dem=0,m;
    		     // j,l la dung de kiem tra so tu da nhap co mat bao nhieu lan trong van ban
       infor ch1,ch2;    // 2 tu nhap vao co the khac nhau hoac giong nhau
       List p=F;
       if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
       else
    	{ printf("\nNhap tu voi vi tri bat dau:");
    		fflush(stdin);
    		gets(ch1);
    	  printf("\nNhap tu voi vi tri ket thuc:");
    		fflush(stdin);
    		gets(ch2);
    		while(p!=NULL)
    		  {    dem++;
    		       if(strcmp((*p).tu,ch1)==0)
    			   {  j++;
    			      vtd[j]=dem;
    			   }
    		       if(strcmp((*p).tu,ch2)==0)
    			   {  l++;
    			      vtc[l]=dem;
    			   }
    		       p=(*p).next;
    
    		 }
    		if(j==0) printf("\nKhong tim thay %s trong van ban !\n",ch1);
    		else   printf("\nTong cong %d vi tri tim dc!\n",j);
    		if(l==0) printf("\nKhong tim thay %s trong van ban!\n",ch2);
    		else printf("\nTong cong %d vi tri tim dc!\n",l);
    	 if((j!=0)&&(l!=0))
    	   {
    	    do { printf("\nNhap tu %s lap lai o lan thu i de xoa tu do:",ch1);
    		 scanf("%d",&i);
    		 printf("\nNhap tu %s lap lai o lan thu k de ket thuc o do:",ch2);
    		 scanf("%d",&k);
    		 if((i<0||i>j)||(k<0||k>l))
    		 printf("\nNhap sai, hay nhap lai!\n");
    	       }while((i<0||i>j)||(k<0||k>l));
    	   if(vtc[k]>=vtd[i])
    	     for(m=0;m<=(vtc[k]-vtd[i]);m++)
    	     xoa(F,vtd[i]-1);
    	   else printf("\nKhong thuc hien lenh nay duoc!\n"); // Nguoc vi tri trong van ban theo thu tu uu tien
    	     }
    	 else printf("\nKhong thuc hien lenh nay duoc!\n");   // Khong phat thay 1 trong 2 tu nhap vao ban phim
      }
     printf("\nDa thuc hien xong!\n");
    }
    //----------------------------------------//
    void saochep_catdan(List &F)
    { int i,chon,st,ss,en,t,tt,nn;
      List p=F;
      if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
      else{
    	printf("\nHay chon mot chuc nang :\n");
    	printf("\n -1- Cat 1 doan van ban\n");
    	printf("\n -2- Sao chep 1 doan van ban\n");
    	do
    	{	printf("\nBan chon chuc nang:");
    		scanf("%d",&chon);
    		if(chon<1||chon>2) printf("\nKhong co chuc nang nay ! Hay nhap lai!\n");
    	}while(chon<1||chon>2);
    	do
    	{	printf("\nChu y vi tri nhap vao >= 1 va <= %d !\n",n);
    		printf("\nTu vi tri:");
    		scanf("%d",&st);
    		printf("\nDen vi tri:");
    		scanf("%d",&en);
    		if((st<1||st>n)||(en<1||en>n||en<st)) printf("\nNhap sai!Hay nhap lai!\n");
    	}while((st<1||st>n)||(en<1||en>n||en<st));
    	do
    	{	printf("\nChu y vi tri nhap vao >= 1 va <= %d !\n",n);
    		printf("\nChen vao sau vi tri:");
    		scanf("%d",&t);
    		if(t<0||t>n) printf("\nNhap sai!Hay nhap lai!\n");
    	}while(t<0||t>n);
    	tt=t;nn=n;
    	ss=st;	     //Ban sao cua st
    	while(ss>1)  //dua con tro p den tu co vi tri st
    	{	p=(*p).next;
    		ss--;
    	}
    	for(i=st;i<=en;i++)   //Bat dau sao chep
    	{  if(tt==nn-1)       { chen(F,K,(*p).tu);
    				p=(*p).next;
    			       }
    	   else     {
    			    chenbatki(F,(*p).tu,t-1);      // vi tri duoc danh tu 0
    			    p=(*p).next;
    			    t++;
    		    }
    	  }
          if(chon==1)	for(i=0;i<=en-st;i++) xoa(F,st-1); // Xoa cac phan tu tu vi tri st den en
        }
       printf("\nDa thuc hien xong!\n");
    }
    
    //-------------------------------------------//
    void thaytu(List F,infor o,infor n)  // Chi thay tu ma thoi
    { int c=0;	//Bien dem so tu da thay doi
      List p=F;
      if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
      else{
    	while(p!=NULL&&(strcmp(o,".")!=0)) // Khong duoc thay the ky tu dau cham
    	{	if(strcmp((*p).tu,o)==0)   //tim tu can thay
    		{	strcpy((*p).tu,n); //tien hanh thay the
    			c++;
    
    		}
    		p=(*p).next;    //tiep tuc
    	}
    	if(c==0) printf("\nVan ban duoc giu nguyen !\n");
    	else printf("\nDa thay doi xong! So tu da thay doi la : %d !\n",c);
          }
          printf("\nDa thuc hien xong!\n");
    }
    //---------------------------------------------//
    int sotu(List F)
    {  int c=0;	// Bien dem
       List p=F;
       if(p==NULL)  printf("\nVan ban rong!Hay khoi tao van ban!\n");
       else
          { while(p!=NULL)
    	{	if((strcmp((*p).tu,"."))&&strcmp((*p).tu," "))
    		c++;
    		p=(*p).next;
    	}
          }
          return c;
    }
    //---------------------------------------------//
    void vanbangoc(List F)  //van ban khong chinh sua ,nguyen van
    {	List p=F;
    	if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
    	else
    	{	printf("\nVan ban goc khong duoc chinh sua nhu sau :\n");
    		while(p!=NULL)
    		{	printf("%s",(*p).tu);
    			p=(*p).next;
    		}
    		printf("\nDa in xong!\n");
    	}
    }
    //---------------------------------------------//
    void kiemtracuphap(List &F)
    {  if(sualoi(F)==0)
    		      { if(F!=NULL)
    			      {  printf("\nVan ban hop le !\n");
    				 printf("\nDa in xong van ban !\n");
    			      }
    		      }
    		else  { printf("\nVan ban khong hop le !Duoc sua lai theo cu phap cua cau van ban !\n");
    			invanban(F);
    		      }
    }
    //---------------------------------------------//
    void thongtin_vb(List F)
    {   clrscr();
        int l;
        printf("\nChon chuc nang su dung:\n");
        printf("\n-1-Muon xem thong tin van ban truoc khi thuc hien ham !\n");
        printf("\n-2-Khong xem thong tin van ban truoc khi thuc hien ham !\n");
        do{ printf("\nNhap chuc nang su dung:");
    	scanf("%d",&l);
    	if((l<1)||(l>2)) printf("\nNhap lai chuc nang :\n");
          }while((l<1)||(l>2));
        if(l==1)
           {   printf("\nVan ban hien hanh:\n");
    	   invanban(F);
    	   kiemtracuphap(F);
    	}
    }
    //---------------------------------------------//
    void khoangtrang(List F)  // Cac khoang trang lien thi xoa bot va them khoang trang
    {  List p=F;
       int c=0,dem=0;
       if(p==NULL) printf("\nVan ban rong!Hay khoi tao van ban!\n");
       else
           { while(p!=NULL)
    	  {  dem++;
    	    if(((strcmp((*p).tu,".")!=0)&&(strcmp((*p).tu," ")!=0))&&((strcmp((*(*p).next).tu,".")!=0)&&(strcmp((*(*p).next).tu," ")!=0)))
    	      {  c++;
    		 chenbatki(F," ",dem-1);
    		 printf("\nGap 2 tu lien tiep them vao giua 1 khoang trang !\n");
    	      }
    	   if((strcmp((*p).tu," ")==0)&&(strcmp((*(*p).next).tu," ")==0))
    	    { c++;
    	      xoa(F,dem-1);
    	      printf("\nGap 2 khoang trang lien tiep tien hanh xoa bot 1 khoang trang !\n");
    	     }
    	   if(((strcmp((*p).tu,".")!=0)&&(strcmp((*p).tu," ")!=0))&&((*p).next)==NULL)
    	      {  c++;
    		 chenbatki(F,".",n-1);
    	      }
    	    p=(*p).next;
    
    	 }
           }
       if(c!=0)  printf("\nDa co su thay doi!\n");
    }
    //---------------------------------------------//
    void main() //ham chinh
    { clrscr();
      int d,vt;
      do{ clrscr();
          printf("\n* * * * * * * * * * * ==> Menu <== * * * * * * * * * * *\n");
          printf("\n->01<-Nhap moi van ban !!!");
          printf("\n->02<-In van ban goc !!!");
          printf("\n->03<-In van ban chinh sua theo cu phap Tieng Viet !!!");
          printf("\n->04<-Tim kiem tu co do dai bang d !!!");
          printf("\n->05<-Tim tu co trong van ban !!!");
          printf("\n->06<-Tong so tu trong van ban !!!");
          printf("\n->07<-Them tu vao dau van ban !!!");
          printf("\n->08<-Them tu vao cuoi van ban !!!");
          printf("\n->09<-Them tu vao sau vi tri chon tu ban phim !!!");
          printf("\n->10<-Them tu vao sau tu trong van ban !!!");
          printf("\n->11<-Sua 1 tu hoac 1 dau cham trong van ban !!!");
          printf("\n->12<-Thay the 1 tu hoac 1 dau cham bang 1 tu khac !!!");
          printf("\n->13<-Xoa tu dau tien trong van ban !!!");
          printf("\n->14<-Xoa tu bat ki theo vi tri !!!");
          printf("\n->15<-Xoa tu bat ki bang cach nhap tu do tu ban phim !!!");
          printf("\n->16<-Xoa doan VB bang cach nhap vi tri !!!");
          printf("\n->17<-Xoa doan VB bang cach nhap tu de dinh vi tri !!!");
          printf("\n->18<-Sao chep hoac cat dan 1 doan trong van ban !!!");
          printf("\n->00<-Ket thuc cong viec !!!\n");
          printf("\n* * * * * * * * * * ==> The End <== * * * * * * * * * * *\n");
          printf("\nChon cong viec tiep theo => ");
          scanf("%d",&cv);
          switch(cv)
          {
    	case 1: clrscr();
    		khoitao(F,K);
    		khoitaovb(F,K);
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 2: clrscr();
    		vanbangoc(F);
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 3: clrscr();
    		printf("\nVan ban hien hanh:\n");
    		invanban(F);
    		kiemtracuphap(F);
    		printf("\nKiem tra van ban co thua khoang trang hoac 2 tu sat canh nhau khong!\n");
    		khoangtrang(F);
    		invanban(F);
    		kiemtracuphap(F);
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 4: thongtin_vb(F);
    		dodai(F);
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 5: thongtin_vb(F);
    		printf("\nBat dau qua trinh tim kiem tu !\n");
    		timkiem(F);
    		printf("\nKet thuc qua trinh tim kiem tu !\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
    	case 6: thongtin_vb(F);
    		if(sotu(F)>0)
    		   printf("\nCo tat cac %d tu trong van ban !\n",sotu(F));
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 7: thongtin_vb(F);
    		printf("\nBat dau qua trinh them tu bang ham chen dau van ban!\n");
    		printf("\nNhap tu can them vao :");
    		fflush(stdin);
    		gets(x);
    		chendau(F,x);
    		printf("\nKet thuc qua trinh them tu bang ham chen dau van ban!\n");
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 8: thongtin_vb(F);
    		printf("\nBat dau qua trinh them tu bang ham chen cuoi van ban!\n");
    		printf("\nNhap tu can them vao :");
    		fflush(stdin);
    		gets(x);
    		chen(F,K,x);
    		printf("\nKet thuc qua trinh them tu bang ham chen cuoi van ban!\n");
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
    	case 9: thongtin_vb(F);
    		printf("\nBat dau qua trinh them tu vao van ban bang ham chenbatki!\n");
    		printf("\nNhap tu can them vao :");
    		fflush(stdin);
    		gets(x);
    		printf("\nChu y vi tri nhap vao >= 1 va <= %d!\n",n);
    		printf("\nNhap vi tri muon thay vao:");
    		scanf("%d",&vt);
    		if(vt<1||vt>n) printf("\nVui long goi lai ham nay!\n");
    		else chenbatki(F,x,vt-1);      // vt-1 la vi cac tu va ki tu duoc danh dau tu 0
    		printf("\nKet thuc qua trinh them tu vao van ban bang ham chenbatki!\n");
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
           case 10: thongtin_vb(F);
    		printf("\nBat dau qua trinh them tu bang ham chen!\n");
    		printf("\nNhap tu can them vao :");
    		fflush(stdin);
    		gets(x);
    		chensautu(F,x);
    		printf("\nKet thuc qua trinh them tu bang ham chen!\n");
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
           case 11: thongtin_vb(F);
    		printf("\nBat dau qua trinh sua tu!\n");
    		printf("\nNhap tu moi se thay cho tu cu:");
    		fflush(stdin);
    		gets(x);
    		printf("\nChu y vi tri nhap vao >= 1 va <= %d !\n",n);
    		printf("\nNhap vi tri muon thay vao:");
    		scanf("%d",&vt);
    		if (vt<1||vt>n) printf("\nVui long goi lai ham nay!\n");
    		else sua(F,x,vt-1);    // vt-1 la vi cac tu va ki tu duoc danh dau tu 0
    		printf("\nKet thuc qua trinh sua tu!\n");
    		printf("\nNhap phim bat ki de tiep tuc !\n");
    		getch();
    		break;
           case 12: thongtin_vb(F);
    		printf("\nBat dau qua trinh thay doi tu!\n");
    		printf("\nNhap tu muon thay doi bang tu khac:");
    		fflush(stdin);
    		gets(x);
    		printf("\nNhap tu moi muon thay vao:");
    		fflush(stdin);
    		gets(xn);
    		thaytu(F,x,xn);
    		printf("\nKet thuc qua trinh thay doi tu!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 13: thongtin_vb(F);
    		printf("\nBat dau qua trinh xoa!\n");
    		xoadau(F);
    		printf("\nKet thuc qua trinh xoa!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 14: thongtin_vb(F);
    		printf("\nBat dau qua trinh xoa!\n");
    		printf("\nChu y vi tri nhap vao >= 1 va <= %d !\n",n);
    		printf("\nNhap vi tri muon xoa:");
    		scanf("%d",&vt);
    		if(vt<1||vt>n) printf("\nVui long goi lai ham nay!\n");
    		else xoa(F,vt-1);  // vt-1 la vi cac tu va ki tu duoc danh dau tu 0
    		printf("\nKet thuc qua trinh xoa!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 15: thongtin_vb(F);
    		printf("\nBat dau qua trinh xoa!\n");
    		printf("\nNhap tu can xoa:");
    		fflush(stdin);
    		gets(x);
    		xoatu(F,x);
    		printf("\nKet thuc qua trinh xoa!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 16: thongtin_vb(F);
    		printf("\nBat dau qua trinh xoa doan van ban bang vi tri!\n");
    		xoadoan_vb(F);
    		printf("\nKet thuc qua trinh xoa doan van ban bang vi tri!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 17: thongtin_vb(F);
    		printf("\nBat dau qua trinh xoa doan van bang tu!\n");
    		xoadoan_vb2(F);
    		printf("\nKet thuc qua trinh xoa doan van bang tu!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
           case 18: thongtin_vb(F);
    		printf("\nBat dau qua trinh sao chep!\n");
    		saochep_catdan(F);
    		printf("\nKet thuc qua trinh sao chep!\n");
    		printf("\nNhap phim bat ki de tiep tuc!\n");
    		getch();
    		break;
          };
          }
          while(cv!=0);
          }

  9. #9
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi vuonghuynhit Xem bài viết
    Tham khảo đi nhé
    code dài dòng và lôm côm
    ko hiểu ai tham khảo ai ?
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  10. #10
    Ngày gia nhập
    03 2010
    Bài viết
    41

    Thôi đi cha ơi. tôi làm dài mà dễ hiểu. chứ ông làm khó hiểu quá. người ta mới học mà.....ac qua...
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi langman : 17-04-2010 lúc 09:46 AM.

Các đề tài tương tự

  1. Algorithm Chuyển code tách chuỗi , chuẩn hóa trong văn bản TV từ VB sang C#?
    Gửi bởi gvkatashi01 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 18-11-2013, 05:24 PM
  2. Mã nguồn C Lỗi Tìm giúp lỗi code C chuẩn hóa văn bản
    Gửi bởi minhtri01 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 03-05-2013, 08:35 PM
  3. Bài tập C Thuật toán cho chương trình C chuẩn hóa một đoạn văn?
    Gửi bởi tam826 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 24-03-2013, 01:32 AM
  4. Kỹ thuật C++ Chuẩn hóa nội dung văn bản-Xử lý văn bản
    Gửi bởi minius92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 08-10-2012, 10:06 PM
  5. chuẩn hóa dạng 3NF ?
    Gửi bởi nguyen my trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 4
    Bài viết cuối: 30-12-2009, 10:36 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn