第一次作业

要求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);

    }

}

收获:

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

原文地址:https://www.cnblogs.com/xinghl907/p/9688899.html