• 软工实践第二次作业


    GItHub地址

    PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
    Planning 计划 30 100
    · Estimate · 估计这个任务需要多少时间 510 648
    Development 开发 100 200
    · Analysis · 需求分析 (包括学习新技术) 20 25
    · Design Spec · 生成设计文档 0 0
    · Design Review · 设计复审 20 5
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 5
    · Design · 具体设计 15 30
    · Coding · 具体编码 80 80
    · Code Review · 代码复审 5 50
    · Test · 测试(自我测试,修改代码,提交修改) 5 5
    Reporting 报告 30 60
    · Test Repor · 测试报告 50 50
    · Size Measurement · 计算工作量 5 8
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30

    主函数里包含计算字符数、单词数、行数以及前十的单词。

    int main()
    {
        double t = clock();
        ofstream os("result.txt", ios::out);
        if (!os)
        {
            cerr << "Cannot write file result.txt!" << endl;
            exit(1);
        }
        get_characters(os);
        get_words(10, os);
        get_lines(os);
        priority_words(os);
        os.close();
        cout<<"< Elapsed Time: "<<(clock()-t)/CLOCKS_PER_SEC<<" >"<<endl;
        return 0;
    }

    用桶来记录字符串出现的次数,再用结构体使用迭代器将桶内的字符串和出现次数提取出来,写一个排序函数,将字符串按优先级排序(出现次数高的、同样频率字典序在前的优先级高)。最后提取前十个优先级最高的。

    其他的字符统计之类的,只要采用函数进行封装,从文档内读取并计数即可。

    struct node{
            string sss;
            int num;
            //int value;
        }q[10005];
        map<string, int>word;
        FILE *fp, *os, *infile;
        char ch = 'a';
        ll characters = 0, lines = 0, words = 0;
    
    void get_characters(ofstream &os)
    //得到字符数,用字符逐个输入
    
    void get_words(const int &cnt, ofstream &os)
    //以字符串读入,遇到分隔符再记录是否是单词,单词用桶装
    
    void get_lines(ofstream &os)
    //以字符读入,定义一个字符变量动态记录上一读入的字符,若连续出现两个'
    '则行数不变。
    
    void priority_words(ofstream &os)
    //采用结构体排序,输出前十
    
    //排序算法
    bool cmp(node t1, node t2)
        {
            if(t1.num!=t2.num)
            return t1.num > t2.num;
            int len1 = t1.sss.length();
            int len2 = t2.sss.length();
            int i;
            for(i = 0; i < len1 && i < len2; i++)
            {
                if(t1.sss[i] != t2.sss[i])
                {
                    return t1.sss[i] < t2.sss[i];
                    break;
                }
            }
            if(i == len1)
            return true;
            if(i == len2)
            return false;
        }
    sort(q, q+v, cmp);

    唉,请让我发一条有声评论:“好难过,这不是我要的结果”。

    在我所想到的所有bug攻克后,代码轰轰烈烈的出炉。然后,然后,请唱出git是什么鬼!

    就这样,在最后的几个小时里,我百度,我翻文件,但是,.git我都找不到。最后找到的时候看了下时间,咳咳~~~

    找到的时候我在干嘛呢?在这里跟大家分享我的心情。为什么呢,因为已经没有时间了。

     

    我只能说,多么痛的领悟,原来代码已是我的全部,曾经做时的每一步,都好辛苦,唔~~~

     

    留下此篇博客,当我今后之教训,以后作业发布的第一天,我就要开始做!开始做!开始做!这样的经历使我心痛!!!

    请同样有如此感悟的同学联系我吧!咱们约学习啊!不做完不睡觉那种。

     

    测试用例:

    aaaaa

    aaaaa1
    aaaaa

    aaaa bbbb


    aabb1,123aacc123aacc123aacc,aabb1

    结果:

    耗时:

    < Elapsed Time: 0.007 >

    完整的博客下周把其他内容块补上再重新发吧!

  • 相关阅读:
    dropdownlist绑定和选中
    uploadify ,前端页面获取值,json,ajax
    sql 列设置默认值,语法查询知识点积累
    两个string数组对应比较
    镜像下载-收藏下
    我用shell写了个mud游戏:武林群侠传
    【shell】十分钟轻松入门;如果没入门,您吐口口水再走吧!
    【命令详解001】top
    那些未曾忘怀的
    mysql慢查询分析工具比较与实战
  • 原文地址:https://www.cnblogs.com/jxdbky/p/9637813.html
Copyright © 2020-2023  润新知