zoukankan      html  css  js  c++  java
  • 都雪冬 20190912-3 词频统计

    此作业要求参见 https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583

    代码地址 https://e.coding.net/ddd111/ruanjiangongcheng.git

    功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键
    盘在控制台下输入命令。

    代码如下:

    void CountWord(char *current)
    {
        wordNode *pNode = NULL;
        pNode = SearchWord(current);
        if(NULL == pNode)
        {
            return;
        }
        else
        {
            pNode->iWordCount++;
        }
    }

    截图如下:

    其它几个功能考虑了很久,目前还不会做,只能靠自己的理解实现部分功能

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    const int WORD_LENGTH = 256; 
    const int FREQUENCY_COUNT=6;    
    struct wordNode
    {
        char word[WORD_LENGTH];             
        int iWordCount;               
        wordNode *pNext;           
    };
     
    wordNode *pHeader = NULL;  
     
    void CountWord(char *current);
    wordNode * SearchWord(char *current);
    void PrintResult();
    void Release();
     
    int main()
    {
        char temp[WORD_LENGTH];
        FILE *fp; 
        if((fp=fopen("123.txt", "r"))==NULL )   
        {
            printf("Open file failed!!
    ");
            exit(1);
        }
            while( EOF != (fscanf(fp,"%s",temp)) )
        {
            CountWord(temp);
        }
           fclose(fp); 
           PrintResult();
              Release(); 
    }
     
    void CountWord(char *current) 
    {
        wordNode *pNode = NULL;
        pNode = SearchWord(current);
        if(NULL == pNode)
        {
            return;
        }
        else
        {
            pNode->iWordCount++;
        }
    }
     
    wordNode * SearchWord(char *current)
    {
        if( NULL == pHeader)
        {
            pHeader = new wordNode;
            strcpy(pHeader->word, current);
            pHeader->iWordCount = 0;
            pHeader->pNext = NULL;
            return pHeader;
        }
        wordNode *pCurr = pHeader;
        wordNode *pPre = NULL;
        while( (NULL != pCurr) && (0 != strcmp(pCurr->word, current)) )
        {
            pPre = pCurr;
            pCurr = pCurr->pNext;
        }
     
        if(NULL == pCurr) 
        {
            pCurr = new wordNode;
            strcpy(pCurr->word, current);
            pCurr->iWordCount = 0;
            pCurr->pNext = NULL;
            pPre->pNext = pCurr;
        }
        return pCurr;
    }
     
    void PrintResult()
    {
        FILE* fp1=fopen("out_all_word_frequency.txt", "w");
        FILE* fp2=fopen("out_high_frequency.txt","w");
        if(NULL == pHeader)
        {
            printf("No Word!!
    ");
        }
        else
        {
            wordNode *pCurr = pHeader;
     
            while(NULL != pCurr)
            {    
                fprintf(fp1,"%s	%d
    ", pCurr->word, pCurr->iWordCount);
                printf("%-20s%-20d
    ", pCurr->word, pCurr->iWordCount);
     
     
                if(pCurr->iWordCount >= FREQUENCY_COUNT)
                    fprintf(fp2,"%s	%d
    ", pCurr->word, pCurr->iWordCount);
     
                pCurr = pCurr->pNext;
            }
             fclose(fp1);
             fclose(fp2);
        }
    }
     
    void Release()
    {
        if(NULL == pHeader)
        {
            return;
        }
        wordNode *pCurr = pHeader;
        while(NULL != pCurr)
        {
            pHeader = pCurr->pNext;
            delete pCurr;
            pCurr = pHeader;
        }
    }

    截图如下:

    PSP:

      预计花费时间 实际花费时间

         时间差     

    功能1 30min 74min 44min
    功能2 90min 177min 87min
    功能3
    功能4

    原因分析:拿到作业题目之后,原本看上去不难,只是统计单词出现的频率而已,但是真正动手做了才发现有很多需要注意的点,所以实际花的时间远远高于预计的时间,但是最后的结果还是不尽人意,让我明白了要学的还有很多,要更加努力才可以。

  • 相关阅读:
    Matplotlib
    【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
    EOS多节点组网:商业场景分析以及节点启动时序
    EOS商业落地利器:多签名操作与应用
    EOS技术研究:合约与数据库交互
    【精解】EOS标准货币体系与源码实现分析
    【精解】EOS智能合约演练
    Efficient&Elegant:Java程序员入门Cpp
    区块链3.0:拥抱EOS
    以太坊挖矿源码:clique算法
  • 原文地址:https://www.cnblogs.com/nenu-dxd/p/11537761.html
Copyright © 2011-2022 走看看