zoukankan      html  css  js  c++  java
  • wordcount作业

    搭档:201631062427,201631062627

    代码地址:https://gitee.com/oyyyyyy/wordcount

    作业地址:

    一: 代码互审情况

    我们采用的都是c语言的方式完成该次作业,都是将整体分成小问题,然后通过函数逐步实现,最后在在主函数里面调用,所以在代码互审的时候,我们只需要检查对方的函数是否能够正确实现功能(在主函数里调用即可)。在检查了对方的代码没有错误的之后,就开始分析谁写的函数更加高效以及精简,最终采纳。我们两个基本上都实现了基本和扩展功能,但是高级功能均没有实现,因为用C语言实现界面化对我们来说是一个极其陌生的领域,在共同的努力之下我们争取完成。检查函数名,函数名称不规范,没有让人看出函数的功能。检查注释,注释太少,没有具体的描述检查规格,没有在该留空格的时候打上空格。检查头文件,头文件命名有问题,总体来说代码很清晰,有简单的注释,就是在命名方面还不够严谨。合并代码时,我们统一了命名,在必要的地方加上了注释,规定了代码字体大小。

    (1)统计字符个数

    void Run(char Type, char Type2, char *Path);
    
    int CodeCount(char *Path) {
    
    FILE *file = fopen(Path, "r");
    
    assert(file != NULL); 
    
    char code;
    
    int count = 0;
    
    while ((code = fgetc(file)) != EOF) 
    
    count+= ((code != ' ') && (code != '
    ') && (code != '	'));
    
    fclose(file);
    
    return count;
    
    }

    (2)统计单词个数

    int WordCount(char *Path) { 
    
    FILE *file = fopen(Path, "r");
    
    assert(file != NULL);
    
    char word;
    
    int is_word = 0; 
    
    int count = 0;
    
    while ((word = fgetc(file)) != EOF) {
    
    if ((word >= 'a' && word <= 'z') || (word >= 'A' && word <= 'Z')) { 
    
    count += (is_word == 0);
    
    is_word = 1;
    
    }
    
    else
    
    is_word = 0;
    
    }
    
    fclose(file);
    
    return count;
    
    }

    (3)统计代码行数

    int LineCount(char *Path) {
    
    FILE *file = fopen(Path, "r");
    
    assert(file != NULL);
    
    char *s = (char*)malloc(200 * sizeof(char));
    
    int count = 0;
    
    for (; fgets(s, 200, file) != NULL; count++);
    
    free(s);
    
    fclose(file);
    
    return count;
    
    }
    
    int Orrid(char *Path)
    
    {
    
    /*FILE *file = fopen(Path, "r");
    
        assert(file != NULL);
    
    printf("code count: %d
    ", CodeCount(Path));
    
    printf("word count: %d
    ", WordCount(Path));
    
        printf("line count: %d
    ", LineCount(Path));
    
    int a,b,c;
    
    FILE *fp1=fopen(Path,"w");
    
    printf("字符数,单词数,行数:
    ");
    
        scanf("%d %d %d",&a,&b,&c);
    
    fprintf(fp1,"该文本文件的字符数为:%d
    ",a);
    
        fprintf(fp1,"该文本文件的单词数为:%d
    ",b);
    
        fprintf(fp1,"该文本文件的行数为:%d
    ",c);
    
        fclose(fp1);
    
    return 0;
    
    }

    (4)主函数

    int main(int argc, char *argv[]) {
    
    char Path[100] = "*.c"; 
    
    char Type = 's';
    
    char Type2 = 'c';
    
    if (argv[1]) { 
    
    Type = *(argv[1] + 1);
    
    if (Type == 's') {
    
    Type2 = *(argv[2] + 1);
    
    strcpy(Path, argv[3]);
    
    }
    
    else
    
    strcpy(Path, argv[2]);
    
    }
    
    Run(Type, Type2, Path); 
    
    printf("
    Press any key to continue");
    
    getchar();
    
    return 0;
    
    }

    运行结果

    1)

    2)

     

    3)

     4)

    5)

     总结:

    在代码合并阶段,由于搭档风格与自己有很大不同,似乎有比自己更精简而有效的,有的却不能运行,在互相检查了许多错误和网上查资料解决完问题后,态度变得有些不耐烦,而且基本上只是为了完成问题,很多高级功能并没有实现,对一些基本功能都有些难想象,在以后学习中,慢慢实现。

  • 相关阅读:
    【UOJ 121】Hzwer的陨石
    【UOJ 666】古老的显示屏
    【UOJ 222】正方形二分型
    【UOJ 654】虫洞问题
    【UOJ 226】最近公共祖先
    【UOJ 92】有向图的强连通分量
    poj2139 Floyd
    poj1631 dp,最长上升子序列
    poj1065&1548 dp,最长上升子序列,偏序与反偏序
    poj1458(裸LCS)
  • 原文地址:https://www.cnblogs.com/oy0411/p/9826408.html
Copyright © 2011-2022 走看看