ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单词长度的垂直直方图

2021-06-14 21:58:03  阅读:198  来源: 互联网

标签:nc word ++ MAXWORD wl 单词 直方图 长度


  代码如下:

#include <stdio.h>

#define MAXHIST 20 /* max length of histogram */
#define MAXWORD 11 /* max length of a word */
#define IN  1 /* inside a word */
#define OUT 0 /* outside a word */

int main() {
    int i, j, c, state, nc;
    int maxvalue; /* maximum value for wl[] */
    int ovflow; /* number of overflow words */
    int wl[MAXWORD]; /* word length counters */
    state = OUT;
    nc = 0; /* number of chars in a word */
    ovflow = 0; /* number of words >= MAXWORD */

    for ( i = 0; i < MAXWORD; i++ ) {
        wl[i] = 0;
    }

    while ( ( c = getchar() ) != EOF ) {
        if ( c == ' ' || c == '\t' || c == '\n' ) {
            state = OUT; /* 在单词外,标志着一个单词的结束 */

            if ( nc > 0 ) {
                if ( nc < MAXWORD ) {
                    ++wl[nc];
                } else {
                    ++ovflow;
                }

                nc = 0; /* 准备计数下一个单词的字符数 */
            }
        } else if ( state == OUT ) { /* 出现某个单词的首字符 */
            state = IN;
            nc = 1; /* beginning of a new word */
        } else { /* 单词除过首字符的其他字符 */
            ++nc; /* inside a word */
        }
    }

    maxvalue = 0; /* find the maximum value in wl[MAXWORD] */

    for ( i = 1; i < MAXWORD; i++ ) { /* wl[0]未使用(单词的长度大于0) */
        if ( wl[i] > maxvalue ) {
            maxvalue = wl[i];
        }
    }

    for ( i = MAXHIST; i > 0; i-- ) { /* 输出直方图(垂直) */
        for ( j = 1; j < MAXWORD; j++ ) {
            if ( wl[j] * MAXHIST / maxvalue >= i ) {
                printf ( " * " );
            } else {
                printf ( "   " );
            }
        }

        putchar ( '\n' );
    }

    for ( i = 1; i < MAXWORD; i++ ) {
        printf ( "%2d ", i );
    }

    putchar ( '\n' );

    for ( i = 1; i < MAXWORD; i++ ) {
        printf ( "%2d ", wl[i] );
    }

    putchar ( '\n' );

    if ( ovflow > 0 ) { /* 是否有长度超出最大单词长度的单词 */
        printf ( "There are %d words >= %d/n", ovflow, MAXWORD );
    }

    return 0;
}

标签:nc,word,++,MAXWORD,wl,单词,直方图,长度
来源: https://blog.csdn.net/fukangwei_lite/article/details/117913439

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有