Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 19 trên tổng số 19 kết quả

Đề tài: tìm số lần xuất hiện của từ trong chuỗi

  1. #11
    Ngày gia nhập
    11 2007
    Bài viết
    6

    Mặc định tìm số lần xuất hiện của từ trong chuỗi

    Trích dẫn Nguyên bản được gửi bởi dragoncl12 Xem bài viết
    ặc ặc, bạn đã chạy thử bài mình chưa và đúng cái chuỗi "can con" rồi tìm từ "con" ấy , nếu mà chạy được thì có lẽ trình borland c mình bị lỗi rồi. Mà công nhận thấy cái lỗi đúng bực kiểm tra với mấy cái chuỗi khác thì đúng,còn với cái chuỗi "can con" là lộn máu.
    Mình chạy bằng DEV c++ cũng có lỗi như vậy nhưng mà chịu không tài nào tìm ra lỗi được trong bài cậu.code viết khó đọc quá.Nhất là ký hiệu.

    mình viết lại bài này đây:Trong bài này còn phân biệt chữ hoa với chữ thường ,nếu muốn không phân biệt thì cậu tự thêm vào nhé.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. main()
    5. {
    6.       char s[100],test[100],temp[100];
    7.       printf("Nhap vao 1 chuoi:");gets(s);
    8.       printf("Tu ban muon kiem tra:");fflush(stdin);gets(test);
    9.      
    10.       int i=0,j=0,dem=0;
    11.       for(i=0;i<strlen(s);i++)
    12.       {
    13.           if(  (i-1<0||s[i-1]==' ') &&  s[i]!=' ' ){  //Tim toi vi tri dau tien cua moi tu trong chuoi
    14.               while( s[i]!=' ' &&  i<strlen(s) )
    15.               {
    16.               temp[j]=s[i];
    17.               i++;j++;
    18.               }
    19.               temp[j]='\0';
    20.               j=0;
    21.           if(strcmp(test,temp)==0) dem++;
    22.           }
    23.       }  
    24. printf("So lan tu %s xuat hien la %d",test,dem);
    25. getch();
    26. }

  2. #12
    Ngày gia nhập
    03 2007
    Bài viết
    10

    cám ơn bạn nhiểu hen cách của bạn trong có vẻ ngắn gọn và dễ hiểu wá.

  3. #13
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Còn nếu muốn chạy nhanh hơn thì dùng KMP. Muốn vậy thì phải chịu khó nghiên cứu thôi.
    Trên thực tế thì KMP (Knuth-Morris-Pratt) chạy không nhanh hơn Brute-Force đâu nhc ah. Nếu tìm kiếm chuỗi muốn nhanh hơn thì dùng Boyer-Moore chứ không phải là KMP.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  4. #14
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Trên thực tế thì KMP (Knuth-Morris-Pratt) chạy không nhanh hơn Brute-Force đâu nhc ah.
    Vậy phiền Dr phân tích độ phức tạp của 2 thuật toán Brute force và MP(KMP) trong trường hợp csdl là file nhị phân .
    Keep moving forward!

    ... Retired ...

  5. #15
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Vậy phiền Dr phân tích độ phức tạp của 2 thuật toán Brute force và MP(KMP) trong trường hợp csdl là file nhị phân
    Đang nói đến chuỗi text mà, nhưng chuỗi nhị phân cũng không khác nhiều.

    Nếu tính độ phức tạp thì KMP tốt hơn, số lượng so sánh mẫu ít hơn trong trường hợp các mẫu có sự tự lặp lại.
    KMP có điểm mạnh là không cần dự phòng trong văn bản, nên có lợi hơn BF trong tìm kiếm văn bản lớn.
    Nhưng trong thực tế rất ít khi xảy ra trường hợp các mẫu có tính tự lặp lại cao, thế nên mới nói là KMP không nhanh hơn Brute-Force là mấy. Cậu cứ thử đi.

    Nếu việc dự phòng là không khó khăn thì Boyer-Moore lại nhanh hơn đáng kể so với 2 thuật toán trên.

    Đó là nhận xét của tớ.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #16
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Mặc định tìm số lần xuất hiện của từ trong chuỗi

    C++ Code:
    1. #include<iostream>
    2. #include<string.h>
    3. int demtu(char a[2000])
    4. {
    5.     int dem=0;
    6.     for(int i=0;i<strlen(a);i++)
    7.     {
    8.         if( a[i]==' ')
    9.         dem++;
    10.     }
    11.     return dem+1;
    12. }
    13. void xoakhoangtrang(char s[2000])
    14. {
    15.     int n=strlen(s);
    16.     for(int i=0;i<n;i++)
    17.     {
    18.         if((s[i]==' ')&&(s[i+1]==' '))
    19.         {
    20.             int j;
    21.             for( j=i;j<n;j++)
    22.             {
    23.                 s[j]=s[j+1];
    24.             }
    25.             i--;
    26.         }
    27.     }
    28. }
    29. int kiemtra(char a[2000],char b[20])
    30. {
    31.     int l1=strlen(a),l2=strlen(b);
    32.     int i,j,k;
    33.     int vt_b_a=-1; /* Vi tri xau 2 trong xau 1 */
    34.     for (i=0;i<=l1-l2;i++) /*Vi tri bat dau thu doan so sanh*/
    35.     {
    36.        for (j=0;j<l2;j++) /*bat dau so sanh*/
    37.           if (b[j]!=a[i+j]) break; /*neu gap ky tu khac thi dung so sanh*/
    38.        if (j>=l2) /*neu so sanh het xau 2*/
    39.        {
    40.         vt_b_a=i; break; /*Tim thay vi tri bat dau cua doan = xau2*/
    41.        }
    42.     }
    43.     if (vt_b_a==-1)
    44.             return 0;
    45.     else
    46.         {
    47.             return vt_b_a;
    48.         }
    49. }      
    50.  
    51. int main()
    52. {
    53.     char chuoi[2000];char tu[20],suli[2000];
    54.     int i;
    55.     cout<<"NHAP CHUOI: ";
    56.     cin.getline(chuoi,2000);
    57.     cout<<"\nNHAP TU:";
    58.     cin.getline(tu,20);
    59.     cin.ignore();
    60.     int sochu=strlen(chuoi),sotu=strlen(tu);
    61.     xoakhoangtrang(chuoi);
    62.             if(kiemtra(chuoi,tu)!=0)
    63.                {
    64.                      int vitrichu=kiemtra(chuoi,tu);
    65.                      strncpy(suli,chuoi,vitrichu);
    66.                      cout<<"\nvi tri tu la: "<<demtu(suli);
    67.                }
    68.                else
    69.                {
    70.                   cout<<"\nchuoi khong ton tai tu\n";
    71.                }
    72.     return 0;
    73. }

    thử xem cậu,hihi,bài làm từ hồi học C

  7. #17
    Ngày gia nhập
    05 2009
    Bài viết
    34

    Dùng con trỏ đi bác

  8. #18
    Ngày gia nhập
    07 2009
    Bài viết
    3

    cái đếm từ trong câu tại sao mình lại hok đếm số khoản trắng nhỉ..
    các từ cách nhau khoản trắng mà đúng hok..
    trần văn a
    2 trắng => 3 từ....
    anh yeu em nhiều lắm 4 trắng 5 từ

  9. #19
    Ngày gia nhập
    04 2018
    Bài viết
    1

    Talking mình đánh code theo cách của admin kavin hoang, mình nghĩ cách này đúng 100%

    Trích dẫn Nguyên bản được gửi bởi dragoncl12 Xem bài viết
    ặc ặc, bạn đã chạy thử bài mình chưa và đúng cái chuỗi "can con" rồi tìm từ "con" ấy , nếu mà chạy được thì có lẽ trình borland c mình bị lỗi rồi. Mà công nhận thấy cái lỗi đúng bực kiểm tra với mấy cái chuỗi khác thì đúng,còn với cái chuỗi "can con" là lộn máu.
    mình đánh code theo cách của admin kavin hoang, mình nghĩ cách này đúng 100%
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>

    int occurrences( char *sentence, char *word )
    {
    int i,db=0,index=0,j,k;
    char uj[1000];
    int hely[1000];
    while(1)
    {
    for(i=0;i<strlen(sentence);i++)
    {
    if(sentence[i]==word[0])
    {
    hely[index]=i;
    index++;
    }
    }
    for(k=0;k<index;k++)
    {
    int index2=0;
    for(j=hely[k];j<hely[k]+strlen(word);j++)
    {
    uj[index2]=sentence[j];
    index2++;
    }
    uj[index2]='\0';
    if(strcmp(uj,word)==0) db++;
    }
    break;
    }
    return db;
    }

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

  1. Lập trình C++ Mình muốn hỏi về bài toán tìm số lần xuất hiện của ký tự nhiều nhất trong chuỗi và số lần xuất hiện
    Gửi bởi ducky trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-09-2013, 11:17 AM
  2. Mảng trên C Chuỗi con xuất hiện vị trí thứ bao nhiêu trong chuỗi mẹ
    Gửi bởi hjepsjga_94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 22-07-2013, 06:49 PM
  3. Bị lỗi dính chuỗi khi nhập xuất chuỗi từ file trong C++?
    Gửi bởi nguyenchikhang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 03:13 PM
  4. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 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: 17-01-2011, 12:38 PM
  5. Nhập chuỗi, đếm số lần xuất hiện các từ trong chuỗi như thế nào?
    Gửi bởi VizDee trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 23-01-2010, 01:33 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