Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: bài toán đếm số lần xuất hiện của từ trong dãy

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

    Wink bài toán đếm số lần xuất hiện của từ trong dãy

    em biết cái sai rồi , khai báo tên hàm xong toạch phát chấm phẩy luôn các bác thông cảm

    C++ Code:
    1. void SoLanXuatHienTu(char *s);//Declaration terminated incorrectly
    2. {
    3.     char *tu;
    4.     int x=0,dem=0;
    5.     printf("\nBan nhap tu can kiem tra : ");
    6.     scanf("%c",&tu);
    7.     for(int i=0;s[i]!='\0';i++)
    8.         {
    9.         for(int j=0;tu[j]!='\0';j++) if (s[i+j]==tu[j]) x++;
    10.         if (x==strlen(tu))  dem++;
    11.         i+=strlen(tu);
    12.         }
    13.     cout<<"\nSo lan xuat hien cua tu ";
    14.     for(int h=0;tu[h]!='\0';h++)
    15.         printf("%c",tu[h]);
    16.     printf(" la %d lan ",dem);
    17. }
    Đã được chỉnh sửa lần cuối bởi Devost24 : 01-04-2009 lúc 11:46 PM.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    - Bạn sử dụng con trỏ không cấp phát bộ nhớ.
    - Nhập chuỗi không nên sử dụng scanf() nên sử dụng gets()
    - Thuật toán không tốt, nên so sánh kí tự đầu tiên trước rồi mới xét đến các kí tự còn lại.

    C Code:
    1. int n = strlen(s), t = strlen(tu);
    2. for(int i=0; i<n-t; i++)
    3. {
    4.      if (tu[0]==s[i])
    5.      {
    6.           int ok = 1;
    7.           for(int j=1; j<t; j++) if (s[i+j] != tu[j]) {ok=0;break;}
    8.      if (ok)  dem++;
    9.      i += t-1;
    10. }

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    - Bạn sử dụng con trỏ không cấp phát bộ nhớ.
    - Nhập chuỗi không nên sử dụng scanf() nên sử dụng gets()
    - Thuật toán không tốt, nên so sánh kí tự đầu tiên trước rồi mới xét đến các kí tự còn lại.

    C Code:
    1. int n = strlen(s), t = strlen(tu);
    2. for(int i=0; i<n-t; i++)
    3. {
    4.      if (tu[0]==s[i])
    5.      {
    6.           int ok = 1;
    7.           for(int j=1; j<t; j++) if (s[i+j] != tu[j]) {ok=0;break;}
    8.      if (ok)  dem++;
    9.      i += t-1;
    10. }
    em có thử lại như bác góp ý nhưng nó vẫn báo lỗi như trên .... bác đã test kỹ hộ em chưa đây em dùng TC 3.0 tiếng việt của cái lỗi là khai báo giới hạn không đúng
    Đã được chỉnh sửa lần cuối bởi Devost24 : 01-04-2009 lúc 04:11 PM.

  4. #4
    Ngày gia nhập
    02 2009
    Bài viết
    21

    if (ok) dem++;
    cho em hỏi viết thế này nó kiểm tra điều kiện gì của ok . Mà vừa tìm được đoạn code hoàn chỉnh rồi http://forums.congdongcviet.com/show...0315#post80315 còn code em sai đâu em biết rồi các bác xem lại bài viết 1
    Đã được chỉnh sửa lần cuối bởi Devost24 : 01-04-2009 lúc 11:47 PM.

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. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  3. Đếm các xâu thuận nghịch xuất hiện trong file và số lần xuất hiện của các xâu đó
    Gửi bởi orchidshl1 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 19-09-2012, 10:47 AM
  4. Trả lời: 1
    Bài viết cuối: 27-04-2011, 09:30 PM
  5. bài toán tìm số lần xuất hiện các phần tử xuất hiện trong 1 chuỗi
    Gửi bởi tuan_anhhhh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 11-03-2008, 09:30 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