• 软件工程第一个个人小程序


         这个学期刚刚开始,我们有很多专业课,其中就有一门非常重要的科目——软件工程,这次是软件工程第一个个人小程序,是分析一个英文文章各个单词出现的频率,然后把其中频率最高的10个单词输出,我的编程能力不是太好,所以断断续续用了多半天才完成这个程序。

    我感觉这个程序的难点是查找每个单词出现的频率,从文章开始一个一个字符来查,满足a-z或者A-Z都可以。还有就是要读取文件,代码如下:

    ifstream in("english.txt"); //打开文件
    string  temp; 
    string  str; 
    int  count=0;
    int j=0;

    完成读取操作后就要查找单词的出现频率了,采用计数来判断英文字符和标点符号和数字的区别,如果是英文字符计数加一,如果是非英文字符计数终止。然后再判断单词,如果判定的英文字符都一样,则为同一个单词,然后计数加一。代码如下:

    //按行读取文件,对每行信息截取单词并计数
    while(getline(in,temp))
    {
    for(int
    i=0;i<temp.length ();i++)
    {

    if((temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z'))
    count++;                        //如果是英文字符,则计数加1
    else
    if(count)                      //单词遇非英文字符时,计数终止,截取单词
    {

    str=temp.substr (i-count,count); 
          
    if(v.size
    ())                  //若向量的长度不为0,则将单词与已有单词比较
    {

    for(j=0;j<v.size ();j++)

    if(str.compare(v[j].word )==0)

    {
    v[j].num
    ++;          //单词相同,则将相应单词的数目加1

    count=0;              //计数变量重新赋值为0,以便记录新的单词

    break;
         }
    }  
     if(j>=v.size ())                  
    {
    tempstr.word = str;
    tempstr.num =1;
    v.push_back (tempstr);
    count = 0;                    //单词添加完毕,计数变量归0,记录新单词
        } 
      } 
     } 
    }

    最后就是输出单词频率,代码如下:

    for(int i=0;i<v.size ();i++)
    cout<<"the word is:"<<v[i].word<<", the times is:"<<v[i].num<<endl;
    return 0;
    }

    完整代码如下:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    using namespace std;

    //定义存储单词和出现次数的结构体

    typedef struct{

    string word;

    int num;

    }

    count;

          int main()

    {

    vector<count> v;
           count
         tempstr;  
         tempstr.num=0;  
                 ifstream in("english.txt"); 
                 string temp;  
                 string str;
    //临时变量,存储单个单词
         int count=0;  
         int j=0;

    //按行读取文件,对每行信息截取单词并计数
                 while(getline(in,temp))
    {
                   for(int
    i=0;i<temp.length ();i++)
    {
                     if((temp[i]>='a'&&temp[i]<='z')||(temp[i]>='A'&&temp[i]<='Z'))
                      count++;                        //如果是英文字符,则计数加1
    else
                 if(count)                      //单词遇非英文字符时,计数终止,截取单词
    {
                     str=temp.substr
                    (i-count,count); 
          
                   if(v.size ())
    //若向量的长度不为0,则将单词与已有单词比较
    {

                   for(j=0;j<v.size ();j++)

                   if(str.compare(v[j].word )==0)
               {

         v[j].num ++;          //单词相同,则将相应单词的数目加1

             count=0;              //计数变量重新赋值为0,以便记录新的单词

    break;
                }

                   if(j>=v.size ())                  //单词第一次出现,将其添加至向量中
    {
                   tempstr.word = str;
                   tempstr.num =1;
                   v.push_back (tempstr);
                  count = 0;                    //单词添加完毕,计数变量归0,记录新单词
               }

           }

        }

    }

    //打印单词及出现次数

    for(int i=0;i<v.size ();i++)

    cout<<"the word is:"<<v[i].word<<", the times is:"<<v[i].num<<endl;

    return 0; }

    时间安排:                             周活动总结表

    姓名:付亚飞                                                                                 日期:2014年3月2日

    日期/任务       听课        查阅资料       编写程序       编写博客                         时间总计

    周四              100                                                                                  100

    周五                              30             30                20                               80

    周六                                               20                30                               50

              

    反思总结:

       这个程序不是特别难,我是用C++编写的,程序没有实现很多的功能,只是实现了基础的功能。通过这次实践我认识到自己还有很多的不足,对程序细节没有足够重视,一条语句能够出现很多的错误,感觉自己的编程能力存在很大的不足。在编写程序时遇到过很多的难题,我请教了其他的同学,上网查询了相关的知识,在以后几次团队项目中我会弥补自己的不足。

      

       

  • 相关阅读:
    收集的java面试题
    重载和重写的区别
    java中封装的概念
    java中多态的概念
    vue中的$on,$emit,$once,$off源码实现
    js bind的实现
    对象的深拷贝
    v-for的简单实现
    v-for的显示过滤/排序结果
    ES6的数组方法之Array.from
  • 原文地址:https://www.cnblogs.com/feiji/p/3575647.html
Copyright © 2020-2023  润新知