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

Đề tài: Bài : Viết một chương trình C để hiển thị số lần xuất hiện của một ký tự nào đó trong

  1. #11
    Ngày gia nhập
    09 2006
    Bài viết
    7

    Mặc định Bài : Viết một chương trình C để hiển thị số lần xuất hiện của một ký tự nào đó trong

    :1) Viết một chương trình C để hiển thị số lần xuất hiện của một ký tự nào đó trong một chuỗi.
    Ko biết viết như thế này được ko :
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4. // =========================
    5. void Count_Letter_In_String(char *S)
    6. {
    7.     int len = strlen(S);
    8.     char temp = S[0];
    9.     int count=0;
    10.     int i = 0;
    11.     while(i<len)
    12.     {
    13.         if(S[i]!=temp)
    14.         {
    15.             printf("Ky tu '%c' xuat hien %d lan trong chuoi \n",S[i-1],count);
    16.             temp = S[i];
    17.             count = 1;
    18.         }
    19.         else    count ++;
    20.         i++;
    21.     }
    22. }
    23. //=========================
    24. char* Sort_String(char *s)
    25. {
    26.     int t = strlen(s)-1;
    27.     char c;
    28.     for(int i=0;i<t-1;i++)
    29.     {
    30.         for(int j=t;j>i;j--)
    31.         {
    32.             if(s[j]<s[j-1])
    33.             {
    34.                 c=s[j];
    35.                 s[j]=s[j-1];
    36.                 s[j-1]=c;
    37.             }
    38.         }
    39.     }
    40.     return s;
    41. }
    42. //=========================
    43. void  main()
    44. {
    45.     clrscr();
    46.     char *s="I LOVE YOU MORE THAN I CAN SAY !";
    47.     char *str=Sort_String(s);
    48.     Count_Letter_In_String(str);
    49.     getch();
    50. }

  2. #12
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Sắp xếp lại chuỗi cũng hay nhưng code ở trên còn bug ....
    sẽ sai với ký tự cuối hoặc chuỗi chỉ có 1 loại ký tự
    Đã được chỉnh sửa lần cuối bởi 6220119 : 07-08-2008 lúc 08:52 AM.

  3. #13
    Ngày gia nhập
    08 2008
    Bài viết
    28

    Nếu muốn đếm số lấn xuất hiện của tất cả các kí tự thì chỉ cần đánh dấu các kí tự đã được duyệt là xong , có 2 cach sau :
    1) Mỗi kí tự nếu đã được duyệt ta gán cho bằng kí tự cách ' ' ;
    2) Dùng một mảng đánh dấu.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    void main()
     {
       char str[] = "My heart will go on" ;
       int i,j ;                   // cac bien chay ;
       int len = strlen(str) ;
       for (i = 0;i<len;i++)
          if ( (str[i] >='a' && str[i] <= 'z') || (str[i]>='A' && str[i]<='Z') )
             {
               int count = 1 ;
               for (j = i+1;j<len;j++)
                  if (str[j] == str[i])
                    {
                      str[j] = ' ' ;
                      count++ ;
                    }
               printf("Ki tu %c duoc lap lai %d lan\n",str[i],count) ;
             }
       getch();
     }
    Nếu không phân biệt chữ hoa chữ thường thì đầu tiên ta chuyển về dạng viết hoa toàn bộ rồi đếm.
    Phương pháp dùng mảng đánh dấu cũng tương tự. Lấy 1 mảng int a[leng(str)] và gán các giá trị ban đầu bằng 1, nếu 1 kí tự thứ i nào đã được duyệt thì gán a[i] = 0; như vậy trong cái vòng lặp for chỉ cần thêm 1 đk của if là &&a[i].

  4. #14
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Trích dẫn Nguyên bản được gửi bởi aMember Xem bài viết
    Nếu muốn đếm số lấn xuất hiện của tất cả các kí tự thì chỉ cần đánh dấu các kí tự đã được duyệt là xong , có 2 cach sau :
    1) Mỗi kí tự nếu đã được duyệt ta gán cho bằng kí tự cách ' ' ;
    2) Dùng một mảng đánh dấu.
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    void main()
     {
       char str[] = "My heart will go on" ;
       int i,j ;                   // cac bien chay ;
       int len = strlen(str) ;
       for (i = 0;i<len;i++)
          if ( (str[i] >='a' && str[i] <= 'z') || (str[i]>='A' && str[i]<='Z') )
             {
               int count = 1 ;
               for (j = i+1;j<len;j++)
                  if (str[j] == str[i])
                    {
                   str[j] = ' ' ;                  count++ ;
                    }
               printf("Ki tu %c duoc lap lai %d lan\n",str[i],count) ;
             }
       getch();
     }
    Nếu không phân biệt chữ hoa chữ thường thì đầu tiên ta chuyển về dạng viết hoa toàn bộ rồi đếm.
    Phương pháp dùng mảng đánh dấu cũng tương tự. Lấy 1 mảng int a[leng(str)] và gán các giá trị ban đầu bằng 1, nếu 1 kí tự thứ i nào đã được duyệt thì gán a[i] = 0; như vậy trong cái vòng lặp for chỉ cần thêm 1 đk của if là &&a[i].
    Em ko hiểu chỗ str[j] = ' ' ; thì có tác dụng gì đối với chương trình , nếu bỏ đi thì chương trình lại in ra thêm 1 lần nữa
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

  5. #15
    Ngày gia nhập
    10 2007
    Bài viết
    3

    Bài toán này còn có một cách giải mà có độ phức tạp là O(n) : có nghĩa là chúng ta chỉ cần chạy vòng lặp 1 lượt là đã có được kết quả cần tìm D Mọi người cùng suy nghĩ thử xem.

  6. #16
    Ngày gia nhập
    07 2007
    Bài viết
    41

    Mặc định Bài : Viết một chương trình C để hiển thị số lần xuất hiện của một ký tự nào đó trong

    Tuần trước có buổi học đầu tiên về môn mã hóa, ông thầy có bắt về thông kê tần suất xuất hiện của các chữ cái trong tiếng việt.

    Dùng kết quả này để đi thi chiếc nón kỳ diệu thì cũng khá tốt

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

  1. Bài tập C Viết chương trình con liệt kê tần suất xuất hiện của các ký tự chữ cái trong file text
    Gửi bởi contimmongmanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-04-2013, 11:06 PM
  2. Lập trình C Vấn đề viết hàm đọc ảnh trong C/C++ xuất ra file html
    Gửi bởi jophy tran trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 12-04-2013, 10:34 PM
  3. Bài tập C Nhập x, viết hàm chỉ ra vị trí xuất hiện x trong mảng 1 chiều
    Gửi bởi HoangCoi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 21-08-2011, 02:15 PM
  4. Bài tập C++ Viết hàm nhập, xuất mảng và tính tổng các phần tử trong mảng
    Gửi bởi viettan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 09-01-2011, 11:32 AM
  5. tìm tần số xuất hiện của các từ viết trong C
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 28-07-2008, 02:59 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