zoukankan      html  css  js  c++  java
  • 个人项目

    目标与要求


    • 使用开发工具
    • 使用源代码管理工具

    详细要求:

    1. 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。

    附加要求:读入一段文本文件,统计该文本文件中单词的频率。

    2. 性能分析:

    +对C++代码运行VS的性能分析工具,找出性能问题并进行优化。

    +对Java程序运行性能分析工具 NetBeans IDE 6.0,找出性能问题并进行优化。


    详细内容


    • 开发语言:C++    
    • 开发工具:Codeblocks
    • 准备工作:
    1. 思路

    (1)由用户选择是自主输入一段英文字符串,还是读入一段文本文件。

    (2)将录入的字符串分割成若干英文单词。

    (3)将分割出来的英文单词进行筛选(长度小于4的不统计,大写字母转换成小写字母,首字母为非字母数字的单词不统计,)其中的大写字母转换成小写字母以便于之后的统计。

    (4)统计并输出结果。

     

    2.  预计时间

    编写+调试+验证=2H左右

     

    • 源代码
     1 #include<iostream>
     2 #include<fstream>
     3 #include<cstring>
     4 #include<cctype>
     5 using namespace std;
     6 
     7 void screen(int chioce)      //对内容进行筛选
     8 {
     9     char input[50][50],newinput[50][50],newopen[100];
    10     char *open;
    11     if(chioce==1)            //以输入方式对字符串进行存储与筛选
    12     {
    13         cout<<"请输入一串字符串,以回车键作为结束:";
    14         for(int m=0;input[m]!='';m++)     //将字符串以二维字符数组的形式储存起来
    15         {
    16             for(int n=0;input[n]!='';n++)
    17             {
    18                 cin>>input[m][n];
    19             }
    20         }
    21         for(int m=0;input[m]!='';m++)//将输入的字符串的大写转换为小写
    22         {
    23             for(int n=0;input[m][n]!='';n++)
    24             {
    25                 if(input[m][n]>='A'&&input[m][n]<='Z'&&strlen(input)>=4)   //限制字符串大小为4
    26                 {
    27                     int i=0,j=0;
    28                     newinput[i][j]=toupper(input);
    29                 }
    30             }
    31         }
    32         sta(newinput,m*n);
    33     }
    34 
    35     else        //以录入方式对字符串进行存储与筛选
    36     {
    37         int i=0,n;
    38         cout<<"请将所需文本存入D:\open.txt";
    39         ifstream open("D:\open.txt");
    40         open=new int[n];
    41         while(open>>open[i],strlen(open)>=4)  //字符串大于4的才给予储存的机会
    42         {
    43             newopen[i]=toupper(open);         //大写转换成小写
    44             i++;
    45         }
    46         sta(newopen,i);
    47     }
    48 }
    49 
    50 void sta(char word[],int wordnum[])          //统计单词出现的次数
    51 {
    52     char newword[],newwordnum[];
    53     cout<<"统计的单词出现的次数如下:
    ";
    54     for(int i=0;;i++)
    55     {
    56         for(int j=0;if(strcmp(newword[i],word[j]));j++)
    57         {
    58             newwordnum[i]++;
    59         }
    60         cout<<newword[i]<<'	'<<newwordnum[i]<<endl;
    61     }
    62 
    63 }
    64 
    65 
    66 int main( )
    67 {
    68     int chioce;
    69     cout<<"请问是输入一串字符串还是导入一个文本文件?(1:字符串,2;文本文件):";
    70     cin>>chioce;
    71     if(chioce==1||chioce==2)        //用户选择
    72     {
    73         screen(chioce);
    74     }
    75     return 0;
    76 }
    • 所遇问题
    1. 怎么解决用两种方式来进行原数据的导入?

         将两种方式的数据导入都存入数组中以便后面读取。

      2.  怎么样可以减小时间复杂度和空间复杂度?

         尽量的减少循环语句的使用和新空间的调用。

    • 小结

    对于将问题细分化有了更实际的操作练习;对于关注用户界面体验有了初步的感受和认识;

    对于一个程序在空间和时间上的利用有了初步的简化练习;对于某些平时没接触过的库进行了了解;

    • 源代码Github地址

    https://github.com/Jennyhyt/My-source-code

  • 相关阅读:
    实现一个简单的ConnectionPool
    并发连接MySQL
    C#里面滥用String造成的性能问题
    String.IndexOf
    C#代码中插入X86汇编
    正确理解Handle对象
    orleans发送广播消息
    log日志方法
    PHP 批量插入数据
    逻辑漏洞小结之SRC篇
  • 原文地址:https://www.cnblogs.com/hyating/p/5280021.html
Copyright © 2011-2022 走看看