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

Đề tài: tìm tần số xuất hiện của các từ viết trong C

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

    Mặc định tìm tần số xuất hiện của các từ viết trong C

    bài này cho phép tìm tần số của các từ trong 1 đoạn văn,bài hơi dài do mình cũng không có thời gian nhiều để tinh chỉnh
    các bạn có thể tham khảo,ai có phương pháp tốt hơn thì chia sẻ nhé
    C++ Code:
    1. #include<iostream>
    2. #include<string.h>
    3. using namespace std;
    4. char *cat(char chuoi[2000],int dau,int cuoi);
    5. void gan(char chuoi[2000],char xau[100][2000],int sochu);
    6. void xoakhoangtrang(char s[2000]);
    7. void tansotu(char chuoi[2000]);
    8. int demtu(char a[2000]);
    9. void timmax(int *dem,int n,char xau[100][2000])
    10. {
    11.      int max=dem[1],q;
    12.      for(int i=n;i>=1;i--)
    13.      {
    14.         if(max<=dem[i])
    15.         {
    16.             max=dem[i];
    17.             q=i;
    18.         }
    19.      }
    20.     cout<<"\n\n\nTU ("<<xau[q]<<") XUAT HIEN NHIEU NHAT LA "<<max<<" LAN";
    21. }
    22. char *cat(char chuoi[2000],int dau,int cuoi)
    23.     {
    24.         static char suli[2000];
    25.         int i;
    26.         for(i=0;i<cuoi-dau;i++)
    27.         {
    28.             suli[i]=chuoi[i+dau];
    29.         }
    30.         suli[cuoi-dau]=0;
    31.         return suli;
    32.     }
    33. void gan(char chuoi[2000],char xau[100][2000],int sochu)
    34. {
    35.     int sotu=demtu(chuoi),dung,k=2,dungi;
    36.     xoakhoangtrang(chuoi);
    37.     for(int i=0;i<sochu;i++)
    38.     {
    39.         if(chuoi[i]==' ')
    40.         {
    41.                  dungi=i;
    42.                  for(int j=dungi+1;j<sochu;j++)
    43.                  {
    44.                      if(chuoi[j]==' ')
    45.                      {
    46.                          dung=j;
    47.                          strcpy (xau[k],cat(chuoi,dungi+1,dung));
    48.                          k++;
    49.                          break;
    50.                      }
    51.                      else if(chuoi[j+1]==NULL)
    52.                      {
    53.                         dung=j;
    54.                         strcpy (xau[k],cat(chuoi,dungi+1,dung+1));
    55.                         k++;
    56.                         break;
    57.                      }
    58.                  }
    59.         }
    60.     }
    61.     char *x=strtok(chuoi," ");
    62.     strcpy(xau[1],x);
    63. }
    64. void xoakhoangtrang(char s[2000])
    65. {
    66.     int n=strlen(s);
    67.     for(int i=0;i<n;i++)
    68.     {
    69.         if((s[i]==' ')&&(s[i+1]==' '))
    70.         {
    71.             int j;
    72.             for( j=i;j<n;j++)
    73.             {
    74.                 s[j]=s[j+1];
    75.             }
    76.             i--;
    77.         }
    78.     }
    79. }
    80. int demtu(char a[2000])
    81. {
    82.     xoakhoangtrang(a);
    83.     int dem=0;
    84.     for(int i=0;i<strlen(a);i++)
    85.     {
    86.         if( a[i]==' ')
    87.         dem++;
    88.     }
    89.     return dem+1;
    90. }
    91. void tu(char xau[100][2000],int sotu)
    92. {
    93.     int n=sotu;
    94.     for(int i=1;i<=n;i++)
    95.     {
    96.         for(int j=i+1;j<=n;j++)
    97.         {
    98.             if(strcmp(xau[i],xau[j])==0)
    99.             {
    100.                 for(int k=j;k<=n;k++)
    101.                    strcpy(xau[k],xau[k+1]);
    102.                 n--;
    103.                 j--;
    104.             }
    105.         }
    106.     }
    107.     cout<<"SO TU LA:"<<n;
    108. }
    109. void tansotu(char chuoi[2000])
    110. {
    111.     char trunggian[2000],xau[100][2000],xaudau[100][2000];
    112.     strcpy(trunggian,chuoi);
    113.     int sochu=strlen(chuoi);
    114.     int sotu=demtu(chuoi);
    115.     gan(chuoi,xau,sochu);
    116.     gan(trunggian,xaudau,sochu);
    117.     int n=sotu,dem[100];
    118.     for(int i=1;i<=n;i++)
    119.     {
    120.         for(int j=i+1;j<=n;j++)
    121.         {
    122.             if(strcmp(xau[i],xau[j])==0)
    123.             {
    124.                 for(int k=j;k<=n;k++)
    125.                    strcpy(xau[k],xau[k+1]);
    126.                 n--;
    127.                 j--;
    128.             }
    129.         }
    130.     }
    131.     for(i=1;i<=n;i++)
    132.     {
    133.         for(int j=1;j<=sotu;j++)
    134.         {
    135.             if(strcmp(xau[i],xaudau[j])==0)
    136.             {
    137.                 dem[i]++;
    138.             }
    139.         }
    140.         cout<<"\nTU:  "<<xau[i]<<"   XUAT HIEN  "<<dem[i]<<" LAN";
    141.     }
    142.     timmax(dem,n,xau);
    143. }
    144. int main()
    145. {
    146.     char chuoi[2000];
    147.     cout<<"NHAP CHUOI:";
    148.     cin.getline(chuoi,2000,'\n');
    149.     tansotu(chuoi);
    150.     return 0;
    151. }

    khảo sát từ trong 1 file nhưng mình không biết kỹ thuật nào có thể làm gia tăng số phần tử của mảng,mình không thể khảo sát quá nhiều từ trong 1 file

    C++ Code:
    1. #include<iostream.h>
    2. #include<string.h>
    3. #include<fstream.h>
    4. using namespace std;
    5. char *cat(char chuoi[20000],int dau,int cuoi);
    6. void gan(char chuoi[20000],char xau[1000][20000],int sochu);
    7. void xoakhoangtrang(char s[20000]);
    8. void tansotu(char chuoi[20000]);
    9. int demtu(char a[20000]);
    10. void timmax(int *dem,int n,char xau[1000][20000])
    11. {
    12.     fstream file;
    13.     file.open("TANSOTU.txt",ios::out);
    14.      int max=dem[1],q;
    15.      for(int i=n;i>=1;i--)
    16.      {
    17.         if(max<=dem[i])
    18.         {
    19.             max=dem[i];
    20.             q=i;
    21.         }
    22.      }
    23.      file<<"TU...."<<xau[q]<<"....XUAT HIEN NHIEU NHAT LA "<<max<<" LAN";
    24.     cout<<"\nTU..."<<xau[q]<<"...XUAT HIEN NHIEU NHAT LA "<<max<<" LAN";
    25. }
    26. char *cat(char chuoi[20000],int dau,int cuoi)
    27.     {
    28.         char suli[20000];
    29.         int i;
    30.         for(i=0;i<cuoi-dau;i++)
    31.         {
    32.             suli[i]=chuoi[i+dau];
    33.         }
    34.         suli[cuoi-dau]=0;
    35.         return suli;
    36.     }
    37. void gan(char chuoi[20000],char xau[1000][20000],int sochu)
    38. {
    39.     int sotu=demtu(chuoi),dung,k=2,dungi;
    40.     xoakhoangtrang(chuoi);
    41.     for(int i=0;i<sochu;i++)
    42.     {
    43.         if(chuoi[i]==' ')
    44.         {
    45.                  dungi=i;
    46.                  for(int j=dungi+1;j<sochu;j++)
    47.                  {
    48.                      if(chuoi[j]==' ')
    49.                      {
    50.                          dung=j;
    51.                          strcpy (xau[k],cat(chuoi,dungi+1,dung));
    52.                          k++;
    53.                          break;
    54.                      }
    55.                      else if(chuoi[j+1]==NULL)
    56.                      {
    57.                         dung=j;
    58.                         strcpy (xau[k],cat(chuoi,dungi+1,dung+1));
    59.                         k++;
    60.                         break;
    61.                      }
    62.                  }
    63.         }
    64.     }
    65.     char *x=strtok(chuoi," ");
    66.     strcpy(xau[1],x);
    67. }
    68. void xoakhoangtrang(char s[20000])
    69. {
    70.     int n=strlen(s);
    71.     for(int i=0;i<n;i++)
    72.     {
    73.         if((s[i]==' ')&&(s[i+1]==' '))
    74.         {
    75.             int j;
    76.             for( j=i;j<n;j++)
    77.             {
    78.                 s[j]=s[j+1];
    79.             }
    80.             i--;
    81.         }
    82.     }
    83. }
    84. int demtu(char a[20000])
    85. {
    86.     xoakhoangtrang(a);
    87.     int dem=0;
    88.     for(int i=0;i<strlen(a);i++)
    89.     {
    90.         if( a[i]==' ')
    91.         dem++;
    92.     }
    93.     return dem+1;
    94. }
    95. void tu(char xau[1000][20000],int sotu)
    96. {
    97.     int n=sotu;
    98.     for(int i=1;i<=n;i++)
    99.     {
    100.         for(int j=i+1;j<=n;j++)
    101.         {
    102.             if(strcmp(xau[i],xau[j])==0)
    103.             {
    104.                 for(int k=j;k<=n;k++)
    105.                    strcpy(xau[k],xau[k+1]);
    106.                 n--;
    107.                 j--;
    108.             }
    109.         }
    110.     }
    111.     cout<<"SO TU LA:"<<n;
    112. }
    113. void tansotu(char chuoi[20000])
    114. {
    115.     char trunggian[20000],xau[100][20000],xaudau[100][20000];
    116.     strcpy(trunggian,chuoi);
    117.     int sochu=strlen(chuoi);
    118.     int sotu=demtu(chuoi);
    119.     gan(chuoi,xau,sochu);
    120.     gan(trunggian,xaudau,sochu);
    121.     int n=sotu,dem[1000];
    122.     for(int i=1;i<=n;i++)
    123.     {
    124.         for(int j=i+1;j<=n;j++)
    125.         {
    126.             if(strcmp(xau[i],xau[j])==0)
    127.             {
    128.                 for(int k=j;k<=n;k++)
    129.                    strcpy(xau[k],xau[k+1]);
    130.                 n--;
    131.                 j--;
    132.             }
    133.         }
    134.     }
    135.     for(int i=1;i<=n;i++)
    136.     {
    137.         for(int j=1;j<=sotu;j++)
    138.         {
    139.             if(strcmp(xau[i],xaudau[j])==0)
    140.             {
    141.                 dem[i]++;
    142.             }
    143.         }
    144.         cout<<"\nTU:  "<<xau[i]<<"   XUAT HIEN  "<<dem[i]<<" LAN";
    145.     }
    146.     timmax(dem,n,xau);
    147. }
    148. int main()
    149. {
    150.     fstream datafile;
    151.     char ten[20];
    152.     char chuoi[20000];
    153.     cout<<"\nNHAP TEN FILE:";
    154.     cin>>ten;
    155.     datafile.open(ten,ios::in);
    156.     datafile.read(chuoi,20000);
    157.     tansotu(chuoi);
    158.     return 0;
    159. }
    Đã được chỉnh sửa lần cuối bởi AlexF : 23-11-2008 lúc 10:56 AM.

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. 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
    Gửi bởi thangit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 10-09-2008, 08:38 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