zoukankan      html  css  js  c++  java
  • 课程作业

    #ifndef wordcount_h
    #define wordcount_h
    class testfile
    {
    public:
        testfile countcha(char *, testfile);//计算字符数
        testfile countword(char *, testfile);//计算单词数
        testfile countline(char *, testfile);//计算行数
        int getcharacters();
        int getlines();
        int getwords();
        char *content;//存放文本文件数据 
        void init();
    private:
        int characters;
        int words;
        int lines;
    
    };
    ceshi
    ceshijirguo
    void loadword(char w[])
    {
        string wr;
        wr = w;
        map<string, int>::iterator it1 = mapword1.find(wr);//在map红黑树中查找单词 
        if (it1 == mapword1.end())
            mapword1.insert(pair<string, int>(wr, 1));//未找到单词,插入单词并设定频次为1 
        else
            ++it1->second;//找到单词,单词出现频次增加 
    }
    
    testfile testfile::countword(char *t, testfile f1)
    {
        int n = 0;
        ifstream myfile;
        myfile.open(t);
        if (!myfile.is_open())
        {
            cout << "文件打开失败" << endl;
        }
        char c;
        myfile >> noskipws;
        while (!myfile.eof())
        {
            myfile >> c;
            if (myfile.eof())
                break;//防止最后一个字符输出两次
            if (c >= 65 && c <= 90)
                c += 32;//大写字母转小写 
            f1.content[n++] = c;//把文本文件内的数据存入类的content字符数组中    
        }
        myfile.close();
        char temp[4];
        int i = 0, j = 0, flag = 0, words = 0, m = 0, k = 0;
        for (i = 0; i < n; i++)
        {
            if (!((f1.content[i] >= 48 && f1.content[i] <= 57) || (f1.content[i] >= 97 && f1.content[i] <= 122)))//跳过非字母和非数字字符 
                continue;
            else
            {
                for (j = 0; j < 4 && i < n; j++)
                {
                    if (!((f1.content[i] >= 48 && f1.content[i] <= 57) || (f1.content[i] >= 97 && f1.content[i] <= 122)))
                        break;
                    temp[j] = f1.content[i++];//temp中存入四个非空格字符
                }
                if (j == 4)
                {
                    for (m = 0; m < 4; m++)
                    {
                        if (temp[m] < 97 || temp[m]>122)
                        {
                            flag = 1;
                            break;//判断这四个字符是否都是字母
                        }
                    }
                    if (flag == 0)//四个字符都是字母的情况,判断为一个单词
                    {
                        char *w = new char[100];//存放单词 
                        for (m = 0; m < 4; m++)
                        {
                            w[k++] = temp[m];//temp中字符存入w
                        }
                        while (((f1.content[i] >= 48 && f1.content[i] <= 57) || (f1.content[i] >= 97 && f1.content[i] <= 122)) && i < n)//继续存入单词剩余字符
                        {
                            w[k++] = f1.content[i++];
                        }
                        w[k] = '';
                        loadword(w);//可以在此处插入一个外部函数返回一个单词存入map红黑树 
                        delete[]w;
                        words++;
                        k = 0;
                    }
                    else
                    {
                        flag = 0;
                        j = 0;
                    }
                }
            }
        }
        f1.words = words;
        return f1;
    }
    
    3.统计单词数并存储单词
    
    testfile testfile::countcha(char *t, testfile f1) { int i = 0; ifstream myfile; myfile.open(t); if (!myfile.is_open()) { cout << "文件打开失败" << endl; } char c; myfile >> noskipws;//强制读入空格和换行符 while (!myfile.eof()) { myfile >> c; if (myfile.eof()) break;//防止最后一个字符输出两次 i++; } f1.characters = i; myfile.close(); return f1; } testfile testfile::countline(char *t, testfile f1) { ifstream myfile; myfile.open(t, ios::in); int i = 0; string temp;//作为getline参数使用 if (!myfile.is_open()) { cout << "文件打开失败" << endl; } while (getline(myfile, temp)) { if(temp.empty()) continue; i++; } f1.lines = i; myfile.close(); return f1; }
    
    
    
    class testfile { public: testfile countcha(char *, testfile);//计算字符数 testfile countword(char *, testfile);//计算单词数 testfile countline(char *, testfile);//计算行数 int getcharacters(); int getlines(); int getwords(); char *content;//存放文本文件数据  void init(); private: int characters; int words; int lines; }; void testfile::init() { characters = 0; words = 0; lines = 0; content = (char*)malloc(sizeof(char*)*MAXN); }
    这个作业属于哪个课程
    https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018
    这个作业要求在哪里 20
    这个作业的目标 编程
    其他参考文献 菜鸟教程

    头文件和类的定义

    时间

    PSP2.1Personal Software Process Stages预估耗时(分钟)
    Planning 计划 0.5h
    Estimate 估计这个任务需要多少时间 15h
    Development 开发 3h
    Analysis 需求分析(包括学习新技术) 2h
    Design Spec 生成设计文档 0.5h
    Design Review 设计复审 0.5h
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 0.1h
    Design 具体设计 0.5h
    Coding

    具体编码

    3h
    Code Review 代码复审

    3h

    Test 测试(自我测试,修改代码,提交修改) 2h
    Reporting 报告 0.1h
    Test Repor 测试报告 0.1h
    Size Measurement 计算工作量 1.2h
    Postmortem & Process Improvement Plan

    事后总结, 并提出过程改进计划

    0.5h
    合计  

    18h

  • 相关阅读:
    easyui源码翻译1.32--ValidateBox(验证框)
    easyui源码翻译1.32--TreeGrid(树形表格)
    easyui源码翻译1.32--Tree(树)
    easyui源码翻译1.32--TimeSpinner(时间微调)
    easyui源码翻译1.32--Tabs(选项卡)
    easyui源码翻译1.32--SplitButton(分割按钮)
    easyui源码翻译1.32--Slider(滑动条)
    easyui源码翻译1.32--SearchBox(搜索框)
    广度和深度-活在当下!
    IT人为了家庭和自己请保重自己~活在当下!
  • 原文地址:https://www.cnblogs.com/girlsteam/p/14612263.html
Copyright © 2011-2022 走看看