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

Đề tài: Nhập vào 1 xâu kí tự và in ra số lần xuất hiện của mỗi kí tự trong xâu

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

    Unhappy Nhập vào 1 xâu kí tự và in ra số lần xuất hiện của mỗi kí tự trong xâu

    mọi người xem và sửa cho mình đoạn code này với
    nhập vào một xâu kí tự và in ra số lần xuất hiện của mỗi kí tự trong xâu
    C Code:
    1. #include <string.h>
    2. #include<conio.h>
    3. #include<stdio.h>
    4. main(){
    5.        char s[100];
    6.        gets (s);                                                                                                                                  
    7.        int n,i,dem=0;
    8.        printf ("\n Nhap vao xau ki tu : ",s);
    9.        scanf ("%c", &s);
    10.        for (i= 'A'; i<'z';i++)
    11.        {
    12.            dem = 0;
    13.            n= strlen a[i];
    14.            for (i=0;i< n; i++)
    15.            {
    16.                 if (a[i]==c) dem++;
    17.                   return dem;
    18.                   }
    19.                  
    20.        printf("\n Ki tu c xuat hien %c lan",c, dem);
    21.        getch ();
    22. }
    Đã được chỉnh sửa lần cuối bởi xuxu.bka : 06-04-2012 lúc 09:16 AM.

  2. #2
    Ngày gia nhập
    03 2012
    Bài viết
    1

    ^^ Bạn này học cùng mình à. :-ss. Bài này ở môn KTLT thầy VượngVD đây =))
    Bài này làm thế ko ổn.
    Đầu tiên xem lại lỗi câu lệnh của mình đi.
    n= strlen a[i];
    Cần khai báo là strlen(a); mới đúng
    Nhưng sau khi làm việc đó thì chương trình sẽ chạy. nhưng tất nhiên thuật toán sai.

    Còn bài này của mình code bằng C++. bạn xem thuật toán nhé.
    C++ Code:
    1. #include<iostream>
    2. using namespace std;
    3. // Dem so lan 1 KT xuat hien trong xau.
    4. void DemKT(char s[50], int n)
    5. {
    6.     char KT[50];
    7.     // Su dung iCo de danh dau da duyet hay chua duyet ki tu do.
    8.     // iDem de dem so lan xuat hien.
    9.     int iCo[50], iDem[50], iKT[50];
    10.     // Gan gia chi cho co kiem tra la chua duyet va so lan xuat hien ki tu la 1.
    11.     for(int i= 0; i < n; i++)
    12.     {
    13.         iCo[i] = 0;
    14.         iDem[i] = 1;
    15.     }
    16.     // Su dung k de dem so kt khac nhau trong xau.
    17.     int k = 0;
    18.     for(int i = 0; i < n; i++)
    19.     {
    20.         // Kiem tra xem da duyet ki tu nay chua bang iCo.
    21.         if(iCo[i] == 0 )
    22.         {
    23.             for(int j = i+1; j < n; j++)
    24.             {
    25.                 if(s[i] == s[j])
    26.                 {
    27.                     // Tang bien iDem len 1 khi gap kt giong kt dang xet.
    28.                     iDem[i] ++;
    29.                     // Chuyen iCo = 1 khi da duyet qua KT.
    30.                     iCo[j]=1;
    31.                 }
    32.             }
    33.             // Dua kt khac nhau duoc duyet vao 1 xau moi.
    34.             KT[k] = s[i];
    35.             // Gan bien iDem cho pha tu thu k cua mang iKT.
    36.             iKT[k] = iDem[i];
    37.             // Tang k len 1.
    38.             k++;
    39.         }
    40.     }
    41.     for(int i=0; i<k; i++)
    42.     cout<<"\n Kytu \" "<<KT[i]<<" \" xuat hien \" "<<iKT[i]<<" \" lan";
    43. }
    44. void SuaKT(char s[50], int n)
    45. {
    46.     char s1[50];
    47.     char c1, c2;
    48.     cout<<"\n Nhap vao 1 ki tu can thay the: ";
    49.     cin>>c1;
    50.     cout<<"\n Nhap vao 1 ki tu thay the: ";
    51.     cin>>c2;
    52.     // Xet xem kt c1 co trung voi kt trong xau s ko,
    53.     // neu trung thi gan c2 cho kt thu i cua s1,
    54.     // neu khong trung thi gan kt thu i cua s cho kt thu i cua s1,
    55.     for (int i = 0; i < n; i++)
    56.     {
    57.         if (s[i] == c1)
    58.         {
    59.             s1[i] = c2;
    60.         }
    61.         else
    62.         {
    63.             s1[i] = s[i];
    64.         }
    65.     }
    66.         cout<<"\n Xau ki tu sau khi da thay \" "<<c1<<" \" bang \" "<<c2<<" \" la: ";
    67.         for (int i=0; i<n; i++)
    68.         {
    69.             cout<<s1[i];
    70.         }
    71.         cout<<"\n";
    72. }
    73. int main()
    74. {
    75.     char s[50];
    76.     cout<<"\n Nhap vao chuoi: ";
    77.     cin.getline(s, 50);
    78.     int iLen = strlen(s);
    79.     DemKT(s, iLen);
    80.     cout<<"\n\n";
    81.     SuaKT(s, iLen);
    82.     cout<<"\n\n";
    83.     return 0;
    84. }

  3. #3
    Ngày gia nhập
    02 2012
    Nơi ở
    Xanhpetecbua-Nga
    Bài viết
    34

    đề thì 1 kiểu, bài giải thì 1 kiểu
    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. #include<conio.h>
    4. int main()
    5. {
    6.  char s[100];
    7.  gets(s);
    8.  int dem,n=strlen(s);
    9.  for(int i='A';i<='z';i++)
    10.   {
    11.    dem=0;
    12.    for(int j=0;j<n;j++)
    13.    if(s[j]==i) dem++;
    14.    if(dem!=0) printf("%c:%d\n",i,dem);
    15.   }
    16.  getch();
    17. return 0;
    18. }

  4. #4
    Ngày gia nhập
    05 2011
    Nơi ở
    Hà Nội
    Bài viết
    13

    Qua đây nhé bạn. Mọi người đã thảo luận và có solution rồi
    http://forums.congdongcviet.com/showthread.php?t=33744

  5. #5
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Trích dẫn Nguyên bản được gửi bởi buithetai Xem bài viết
    đề thì 1 kiểu, bài giải thì 1 kiểu
    C Code:
    1. #include<stdio.h>
    2. #include<string.h>
    3. #include<conio.h>
    4. int main()
    5. {
    6.  char s[100];
    7.  gets(s);
    8.  int dem,n=strlen(s);
    9.  for(int i='A';i<='z';i++)
    10.   {
    11.    dem=0;
    12.    for(int j=0;j<n;j++)
    13.    if(s[j]==i) dem++;
    14.    if(dem!=0) printf("%c:%d\n",i,dem);
    15.   }
    16.  getch();
    17. return 0;
    18. }
    Code của bạn khá hay.

    Nhưng để tiết kiệm bộ nhớ, bạn không cần sử dụng biến n và hàm strlen, bằng cách sử dụng while.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. int main()
    5. {
    6.  char s[100];
    7.  gets(s);
    8.  int j,dem;
    9.  for(int i='A';i<='z';i++)
    10.   {
    11.     j=-1,dem=0;
    12.     while(s[++j]!='\0')
    13.      {
    14.         if(s[j]==i) dem++;
    15.      }
    16.     if(dem!=0) printf("%c:%d\n",i,dem);
    17.   }
    18.  getch();
    19. return 0;
    20. }

  6. #6
    Ngày gia nhập
    10 2013
    Bài viết
    7

    Mặc định Nhập vào 1 xâu kí tự và in ra số lần xuất hiện của mỗi kí tự trong xâu

    #include <string.h>
    #include<stdio.h>
    #include <iostream>
    int main(){
    char s[100];
    printf ("\n Nhap vao xau ki tu : ");
    gets (s);
    int i,dem=0;
    for (i= 'A'; i<'z';i++)
    {
    dem = 0;
    for (int j=0;j<strlen(s); j++)
    {
    if (s[j]==i) dem++;
    if(dem!=0) printf ("%c:%d\n",dem) ; }
    }



    return 0;
    }

  7. #7
    Ngày gia nhập
    01 2013
    Bài viết
    1,477

    Sao không dùng int freq[26]?
    Để biết tần số kí tự thì chỉ cần xem freq[kí tự - 'A'].
    Với lại cẩn thận chữ hoa chữ thường.

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. Nhập và xuất ký tự trong C
    Gửi bởi eddydn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 18
    Bài viết cuối: 01-09-2013, 12:03 AM
  3. 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
  4. code nhập xuất học sinh trong c-free thì chạy dc ,còn trong visual thì ko
    Gửi bởi art_mu trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 08-02-2012, 10:37 PM
  5. Bài tập C Tìm các từ xuất hiện nhiều nhất trong câu với OOP, làm thế nào hay nhất?
    Gửi bởi j3amboo 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: 14-10-2011, 08:19 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