• 第一次作业


    要求0

    作业要求地址  https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110

    要求1

    git地址:【https://git.coding.net/Yolo907/wf.git

    要求2

    2.1 psp阶段表格

    SP2.1

    任务内容

    计划共完成需要的时间(min)

    实际完成需要的时间(min)

      Planning

    计划

    60

    70

    Estimate

    估计这个任务需要多少时间,并规划大致工作步骤

    45

    60

      Development

    开发

    900

    1125

     Analysis

    需求分析 (包括学习新技术)

    90

    120

    Design Spec

    生成设计文档

    30

    50

    Design Review

    设计复审 (和同事审核设计文档)

    0

    0

     Coding Standard

    代码规范 (为目前的开发制定合适的规范)

    20

    60

    Design

    具体设计

    120

    100

    Coding

    具体编码

    550

    725

     Code Review

    代码复审

    40

    50

    Test

     测试(自我测试,修改代码,提交修改)

    120

    100

      Reporting

    报告

    200

    230

    Test Report

    测试报告

    120

    110

    Size Measurement

    计算工作量

    60

    75

    Postmortem & Process Improvement Plan

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

    40

    45

    功能模块

    具体阶段

    预计时间(min)

    实际时间(min)

      功能1

    具体设计

    具体编码

    测试完善

    20

    130

    15

    30

    225

    25

     功能2

    具体设计

    具体编码

    测试完善

    20

    120

    10

    25

    140

    15

    功能3

    具体设计

    具体编码

    测试完善

    15

    140

    10

    30

    135

    20

     2.2分析预估耗时和实际耗时的差距原因:

    1审题能力太差

    2对语言的掌握不够熟练,基础太弱

    3实践能力较差

    要求3

    1. 解题思路描述:

    审题之后,由于理解能力较差,花费较长时间理解题意。在反复阅读题目后,确定使用比较熟悉的c来实现。首先想到应该读取文件,由于基础较差,只能请教同学和上网查阅。我用到了创建二叉树进行查找和中序遍历查找,找到了数据结构的书并且阅读学习,具体实现还有所欠缺,还需要学习。

    1. 代码介绍:

    1读取文件

    #include <iostream>

    #include <string>

    #include <ctype.h>

    #define N 50

    typedef struct BiTNode

    {

        char data[N];

        int count;

        struct BiTNode *lChild;

        struct BiTNode *rChild;

    }BiTNode,*BiTree;

    int GetWord(int start,int end,char* pBuf,char* word);       //词汇

    void CreateSearchTree(char* item,BiTree& T);                //创建二叉树进行查找

    void InOrderAndPrint(BiTree T,FILE* pf);                    //进行中序遍历查找并写入文件

    int sum=0;

    char temp1[N];

    char temp2[N];

    int main()

    {   while(1){

        //获取输入文件名

        char fileName[30];

        memset(fileName,0,sizeof(fileName));

        printf("请输入查找的文件名(例:test.txt: ");

        scanf("%s",fileName);

        //打开需要统计词汇的文件

        FILE* pf;

        pf=fopen(fileName,"rb");

        if(pf==NULL)

        {

            printf("找不到文件!无法打开文件 ");

            return false;

        }

        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");

        printf("成功打开文件--- %s ! ",fileName);

        printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");

        fseek(pf,0,SEEK_END);

        int len=ftell(pf);

        rewind(pf);

        char *pBuf=new char[len+1];

        pBuf[len]=0;

        fread(pBuf,1,len,pf);

        fclose(pf);

        2读取单词

        printf("%s ",pBuf);

        printf("***************************************************************************** ");

        int i=0;

        char word[N];

        BiTree T=NULL;

        while(i<len)

        {

            i=GetWord(i,len,pBuf,word);

            if(strlen(word)==0)

            {

                break;

            }

            CreateSearchTree(word,T);       

        }

        (3)写入文件并显示在屏幕上

        memset(fileName,0,sizeof(fileName));

        printf("请输入写出文件名 : ");

        scanf("%s",fileName);

        pf=fopen(fileName,"w");

        if(pf==NULL)

        {

            printf("不能写入文件!");

            return false;

        }

        printf("****************************************************************************** ");

        fprintf(pf," 词频统计结果: ");

        printf(" 词频统计结果: ");

        fprintf(pf,"********************************************************* ");

        InOrderAndPrint(T,pf);

        fprintf(pf,"********************************************************* ");

        fprintf(pf,"这篇文章单词总数: %d ",sum);

        printf("这篇文章单词总数:%d ",sum);

        fclose(pf);

        printf("****************************************************************************** ");

        printf("统计结果写入文件 --- %s ! ",fileName);

    }

        return 0;

    }

    (4)词汇

    int GetWord(int start,int end,char* pBuf,char* word)

    {

        int i;

        int j=0;

        memset(word,0,sizeof(char));

        for(i=start;i<end;i++)

        {

            if(isalpha(pBuf[i]))

            {

                word[j]=pBuf[i];

                j++;

            }

            else

            {

                if(j==0)

                {

                    continue;

                }

                word[j]='';

                j=0;

                sum++;

                break;

            }

        }

        return i;

    }

    (5)创建二叉树进行查找

    void CreateSearchTree(char* item,BiTree& T)

    {

        strcpy(temp1,item);

        temp1[0]=tolower(item[0]);

        if(T==NULL)

        {

            T=(BiTree)malloc(sizeof(BiTNode));

            strcpy(T->data,item);

            T->count=1;

            T->lChild=NULL;  

            T->rChild=NULL;

        }

        else

        {

            strcpy(temp2,T->data);

            temp2[0]=tolower(T->data[0]);

            if(strcmp(temp1,temp2)==-1)

            {

                CreateSearchTree(item,T->lChild);

            }

            else if(strcmp(temp1,temp2)==1)

            {   

                CreateSearchTree(item,T->rChild);

            }

            else

            {

                T->count++;

            }

        }

    }

    (6)进行中序遍历查找并写入文件

    void InOrderAndPrint(BiTree T,FILE* pf)

    {

        if(T!=NULL)

        {

            InOrderAndPrint(T->lChild,pf);

            fprintf(pf,"出现的词汇:%-30s 频率:%-9d ",T->data,T->count);

            printf("出现的词汇:%-30s 频率:%-9d ",T->data,T->count);

            InOrderAndPrint(T->rChild,pf);

        }

    }

    收获:

    此次作业让我明白了语言学习是十分重要的,一定要打好基础,并且不能停下学习的脚步,要不断巩固和加强自己所学过的知识,在未来的学习中不断虚心请教,实践非常重要,一定要加强这方面的能力。

  • 相关阅读:
    office365离线安装
    c#使用emit方法DB,实体相互转换
    c#采用emit将DataTable转List
    c#将List转换成DataTable
    c#将List转换成DataTable(采用Emit)
    聊聊编程开发的数据库批量插入(sql)
    c#随便聊聊数据库操作
    c#聊聊文件数据库kv
    WPF几个样式
    c#(IronPython)调用Python方法
  • 原文地址:https://www.cnblogs.com/xinghl907/p/9688899.html
Copyright © 2020-2023  润新知