zoukankan      html  css  js  c++  java
  • 英文文章

    对任意一篇英文文章,统计其中每个单词分别出现了多少次,并可替换指定的单词。
    【功能要求】
    (1)英文文章以文件形式输入。
    (2)统计结果保存为文件。
    (3)对单词进行替换时,允许用户选择全部替换,或逐个替换。替换完成后,将文章存盘。

      1 #include<stdlib.h>
      2 #include<stdio.h>
      3 #include<vector>
      4 #include<fstream>
      5 #include<string> 
      6 using namespace std;
      7 
      8 const int Num = 1000;//文章不同单词的最大数目
      9 int num_word = 0;//单词的个数
     10 vector<string>array_s;//存放文章里面的单词
     11 vector<string>all_content;//存放文章所有的内容
     12 struct Data{
     13     string data;//单词
     14     int count;//单词在文章出现的次数
     15 };
     16 
     17 Data WordNum[Num];//存放单词以及单词出现的次数
     18 
     19 
     20 //判断是否是字母
     21 //是字母返回true,否则返回false
     22 bool IsLetter(char ch){  
     23     if(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z'))){   
     24         return true;
     25     }else    return false;
     26 } 
     27 
     28 //进行统计各个单词出现的次数
     29 void analyse(ifstream &in)
     30 { 
     31     int i;
     32     bool flags;//标志,是否为新的单词
     33     string s="";//初始字符串s为空
     34     char ch;//字符
     35     string temp;//字符串
     36     
     37     while((in.get(ch)))//从文件内读取字符串
     38     {   
     39          if(IsLetter(ch)){   //单词的处理  
     40             s="";  
     41             while(IsLetter(ch))//如果当前字符是字母继续读取
     42             {  
     43                  s+=ch;    
     44                  in.get(ch);    
     45              } 
     46              in.seekg(-1,ios::cur);//文件指针(光标)后退一个字节   
     47              array_s.push_back(s);//读到的单词存到array_s数组中
     48              all_content.push_back(s);//读到的单词存到all_content数组中
     49 
     50              flags = true;
     51              for(i=0;i<num_word;i++)//对新单词进行处理
     52              {
     53                  if(s==WordNum[i].data)//单词已经存在,次数+1
     54                  {
     55                      WordNum[i].count++; //单词出现次数+1
     56                      flags = false;
     57                      break;
     58                  }
     59              }
     60              if(flags)//次单次目前还不存在
     61              {
     62                 WordNum[num_word].count = 1;//单词出现次数+1
     63                 WordNum[num_word].data = s;
     64                 num_word++;//单词数目+1
     65              }
     66         }else{//把其他字符加入all_content中(标点符号换行符一类的)
     67             temp = "";
     68             temp +=ch;
     69             all_content.push_back(temp);//读到的字符转化为字符串存到all_content数组中
     70         }
     71     }
     72 }
     73 
     74 //保存统计结果
     75 void Save()
     76 {
     77     int i;
     78     string file="";//存储原文件
     79     //把原文件存放到字符串中
     80     for(i=0;i<all_content.size();i++)
     81     {
     82         file += all_content[i];
     83     }
     84     printf("原文章内容为:
    ");
     85     printf("%s
    
    ",file.c_str());//输出
     86 
     87     ofstream out;
     88     out.open("D:/result.txt");//将某些关键词替换后的字符串存到文件中
     89 
     90     printf("------------统计结果---------
    ");
     91     printf("单词	出现次数
    ");
     92     if(out.is_open())//打开文件
     93     {
     94         for(i=0;i<num_word;i++)
     95         {
     96             out<<WordNum[i].data;//单词存入文件
     97             out<<"	";
     98             out<<WordNum[i].count;//单词出现次数存入文件
     99             out<<"
    ";
    100             printf("%s	 %d
    ",WordNum[i].data.c_str(),WordNum[i].count);//输出
    101         }
    102         printf("-----以上为统计结果-------
    
    ");
    103     }else printf("文件操作出错!
    "); //文件带卡失败
    104 }
    105 
    106 //替换某个单词
    107 void Update()
    108 {
    109 //    string str,str2;//替换的单词
    110     int i,select;
    111     ofstream out;
    112     
    113     string filelast="";//存储更改后的文件
    114 
    115     char str[40];
    116     char str2[40];
    117     
    118     printf("       ------------------------
    ");
    119     printf("      |-------文章替换---------|
    ");
    120     printf("      |------1:全部替换--------|
    ");
    121     printf("      |------0:逐个替换--------|
    ");
    122     printf("       ------------------------
    ");
    123     printf("选择替换方式:");
    124     scanf("%d",&select);
    125 
    126 
    127     if(select==1)//全部替换
    128     {
    129         printf("请输入你要替换的单词:");
    130         scanf("%s",&str);
    131         printf("你要替换成:");
    132         scanf("%s",&str2);
    133 
    134         out.open("D:/resultupdate.txt");//将某些关键词替换后的字符串存到文件中
    135 
    136         if(out.is_open())
    137         {
    138             for(i=0;i<all_content.size();i++)//查找要替换的单词进行替换
    139             {
    140                 if(all_content[i]==str)//查到,替换
    141                 {
    142                     out<<str2;//保存到文件中
    143                     all_content[i]=str2;
    144                 }else{
    145                     out<<all_content[i];//保存到文件中
    146 
    147                 }
    148             }
    149             printf("文章替换成功!
    
    ");
    150         }else printf("文件操作出错
    "); 
    151     }else{//逐个替换
    152         printf("请输入你要替换的单词:");
    153         scanf("%s",&str);
    154         //cin>>str;
    155         out.open("D:/resultupdate.txt");//将某些关键词替换后的字符串存到文件中
    156 
    157         if(out.is_open())
    158         {
    159             for(i=0;i<all_content.size();i++)
    160             {
    161                 if(all_content[i]==str)//查到,替换
    162                 {
    163                     printf("位置为[%d]的%s",i,str);
    164                     printf("你要替换成:");
    165                     scanf("%s",&str2);
    166                     //cin>>str2;
    167                     out<<str2;//保存到文件中
    168                     all_content[i]=str2;
    169                 }else{
    170                     out<<all_content[i];//保存到文件中
    171                 }
    172             }
    173             printf("文章替换成功!
    
    ");
    174         }else printf("文件操作出错!
    "); 
    175     }
    176 
    177     //string filelast="";
    178 
    179     //把原文件存放到字符串中
    180     for(i=0;i<all_content.size();i++)
    181     {
    182         filelast += all_content[i];
    183     }
    184     printf("替换后文章内容为:
    ");
    185     printf("%s
    ",filelast.c_str());//输出
    186     //cout<<filelast<<endl;
    187 }
    188 int main() 
    189 {  
    190     ifstream in; 
    191     ofstream out;
    192     printf("输入文件路径:");
    193     char a[30];
    194     scanf("%s",&a);//输入文件路径
    195     in.open(a,ios::in); //打开文件
    196     if(in.is_open()){
    197         analyse(in);   
    198         in.close();
    199         //system("pause");
    200     }else printf("文件操作出错!
    "); 
    201 
    202     Save();
    203     Update();
    204     return 0;
    205 }
      1 #include<stdlib.h>
      2 #include<stdio.h>
      3 #include<vector>
      4 #include<fstream>
      5 #include<string> 
      6 using namespace std;
      7 
      8 const int Num = 1000;//文章不同单词的最大数目
      9 int num_word = 0;//单词的个数
     10 vector<string>array_s;//存放文章里面的单词
     11 vector<string>all_content;//存放文章所有的内容
     12 struct Data{
     13     string data;//单词
     14     int count;//单词在文章出现的次数
     15 };
     16 
     17 Data WordNum[Num];//存放单词以及单词出现的次数
     18 
     19 
     20 //判断是否是字母
     21 //是字母返回true,否则返回false
     22 bool IsLetter(char ch){  
     23     if(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z'))){   
     24         return true;
     25     }else    return false;
     26 } 
     27 
     28 //进行统计各个单词出现的次数
     29 void analyse(FILE *fp)
     30 { 
     31     int i;
     32     bool flags;//标志,是否为新的单词
     33     string s="";//初始字符串s为空
     34     char ch;//字符
     35     string temp;//字符串
     36     
     37     while((ch = fgetc(fp))!=EOF)//从文件内读取字符
     38     {     
     39     
     40          if(IsLetter(ch)){   //单词的处理  
     41             s="";  
     42             while(IsLetter(ch))//如果当前字符是字母继续读取
     43             {  
     44                  s+=ch;    
     45                  ch = fgetc(fp);   
     46              } 
     47             fseek(fp,-1L,1);
     48          //    in.seekg(-1,ios::cur);//文件指针(光标)后退一个字节   
     49              array_s.push_back(s);//读到的单词存到array_s数组中
     50              all_content.push_back(s);//读到的单词存到all_content数组中
     51 
     52              flags = true;
     53              for(i=0;i<num_word;i++)//对新单词进行处理
     54              {
     55                  if(s==WordNum[i].data)//单词已经存在,次数+1
     56                  {
     57                      WordNum[i].count++; //单词出现次数+1
     58                      flags = false;
     59                      break;
     60                  }
     61              }
     62              if(flags)//次单次目前还不存在
     63              {
     64                 WordNum[num_word].count = 1;//单词出现次数+1
     65                 WordNum[num_word].data = s;
     66                 num_word++;//单词数目+1
     67              }
     68         }else{//把其他字符加入all_content中(标点符号换行符一类的)
     69         
     70             temp = "";
     71      
     72             temp +=ch;
     73             all_content.push_back(temp);//读到的字符转化为字符串存到all_content数组中
     74             }
     75         }
     76   
     77     fclose(fp);
     78 }
     79 
     80 //保存统计结果
     81 void Save()
     82 {
     83     int i;
     84     string file="";//存储原文件
     85     //把原文件存放到字符串中
     86     for(i=0;i<all_content.size();i++)
     87     {
     88         file += all_content[i];
     89     }
     90     printf("原文章内容为:
    ");
     91     printf("%s
    
    ",file.c_str());//输出
     92 
     93     FILE *fp;
     94     if((fp=fopen("D:/result.txt","w+"))==NULL)
     95     {
     96         printf("文件不存在
    ");
     97         
     98     }else{
     99         printf("------------统计结果---------
    ");
    100         printf("单词	出现次数
    ");
    101    
    102         for(i=0;i<num_word;i++)
    103         {
    104             fprintf(fp,"%s	",WordNum[i].data.c_str());//单词存入文件
    105             fprintf(fp,"%d
    ",WordNum[i].count);////单词出现次数存入文件
    106             printf("%s	 %d
    ",WordNum[i].data.c_str(),WordNum[i].count);//输出
    107         }
    108         fclose(fp);
    109         printf("-----以上为统计结果-------
    
    ");
    110     }
    111 }
    112 
    113 //替换某个单词
    114 void Update()
    115 {
    116 //    string str,str2;//替换的单词
    117     int i,select;
    118     ofstream out;
    119     
    120     string filelast="";//存储更改后的文件
    121 
    122     char str[40];
    123     char str2[40];
    124     
    125     printf("       ------------------------
    ");
    126     printf("      |-------文章替换---------|
    ");
    127     printf("      |------1:全部替换--------|
    ");
    128     printf("      |------0:逐个替换--------|
    ");
    129     printf("       ------------------------
    ");
    130     printf("选择替换方式:");
    131     scanf("%d",&select);
    132 
    133     FILE *fp;
    134     if(select==1)//全部替换
    135     {
    136         printf("请输入你要替换的单词:");
    137         scanf("%s",&str);
    138         printf("你要替换成:");
    139         scanf("%s",&str2);
    140 
    141         
    142         if((fp=fopen("D:/resultupdate.txt","w+"))==NULL)//将某些关键词替换后的字符串存到文件中
    143         {
    144             printf("文件不存在
    ");
    145         
    146         }else{
    147             for(i=0;i<all_content.size();i++)//查找要替换的单词进行替换
    148             {
    149                 if(all_content[i]==str)//查到,替换
    150                 {
    151                     fprintf(fp,"%s",str2);//单词存入文件
    152    
    153                     all_content[i]=str2;
    154                 }else{
    155                     fprintf(fp,"%s",all_content[i].c_str());//单词存入文件
    156                 }
    157             }
    158             fclose(fp);
    159             printf("文章替换成功!
    
    ");
    160         }
    161      
    162      
    163     }else{//逐个替换
    164         printf("请输入你要替换的单词:");
    165         scanf("%s",&str);
    166         //cin>>str;
    167         if((fp=fopen("D:/resultupdate.txt","w+"))==NULL)//将某些关键词替换后的字符串存到文件中
    168         {
    169             printf("文件不存在
    ");
    170         
    171         }else{
    172             for(i=0;i<all_content.size();i++)
    173             {
    174                 if(all_content[i]==str)//查到,替换
    175                 {
    176                     printf("位置为[%d]的%s",i,str);
    177                     printf("你要替换成:");
    178                     scanf("%s",&str2);
    179                     //cin>>str2;
    180                     fprintf(fp,"%s",str2);//单词存入文件
    181                     all_content[i]=str2;
    182                 }else{
    183                     fprintf(fp,"%s",all_content[i].c_str());//单词存入文件
    184                 }
    185             }
    186             fclose(fp);
    187             printf("文章替换成功!
    
    ");
    188         }
    189     }
    190 
    191     //string filelast="";
    192 
    193     //把原文件存放到字符串中
    194     for(i=0;i<all_content.size();i++)
    195     {
    196         filelast += all_content[i];
    197     }
    198     printf("替换后文章内容为:
    ");
    199     printf("%s
    ",filelast.c_str());//输出
    200     //cout<<filelast<<endl;
    201 }
    202 int main() 
    203 {  
    204     ifstream in; 
    205     ofstream out;
    206     FILE *fp;
    207     printf("输入文件路径:");
    208     char file[30];
    209     scanf("%s",&file);//输入文件路径
    210     if((fp=fopen(file,"rt"))==NULL)
    211     {
    212         printf("文件操作出错!
    "); 
    213 
    214     }else{
    215         analyse(fp);   
    216     }
    217     Save();
    218     Update();
    219     return 0;
    220 }
  • 相关阅读:
    Visual Studio 2010使用Visual Assist X的方法
    SQL Server 2000 评估版 升级到 SQL Server 2000 零售版
    双网卡多网络单主机同时访问
    开发即过程!立此纪念一个IT新名词的诞生
    delphi dxBarManager1 目录遍历 转为RzCheckTree2树
    5320 软件集合
    delphi tree 从一个表复制到另一个表
    DELPHI 排课系统课表
    长沙金思维 出现在GOOGLE的 金思维 相关搜索里啦!!
    如何在DBGrid的每一行前加一个单选框?
  • 原文地址:https://www.cnblogs.com/minmsy/p/5079394.html
Copyright © 2011-2022 走看看