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 }
  • 相关阅读:
    JSP(工作原理,组成部分,指令标签,动作标签,隐式对象)
    会话技术cookie与session
    上下文对象-请求对象-响应对象(ServletContext
    反射
    Servlet
    Tomcat服务器
    Http协议
    客户端与服务器
    Oracle虚拟机 与 windows配置
    SQL语句简单整理
  • 原文地址:https://www.cnblogs.com/minmsy/p/5079394.html
Copyright © 2011-2022 走看看