2

これは K&R からの質問です:-

入力に含まれる単語の長さのヒストグラムを出力するプログラムを作成してください。横棒を使ってヒストグラムを描くのは簡単です。しかし、垂直方向はより困難です。

これはチュートリアルの紹介にすぎないため、ライブラリ関数を使用することは想定されていません!

そのために次のプログラムを作成しましたが、いくつかのバグがあります:-

1)単語間に複数の空白文字がある場合、プログラムは期待どおりに動作しません。

2)「k」の最大値を知るにはどうすればよいですか?つまり、入力に含まれる単語の数を知る方法を教えてください。

コードは次のとおりです。

#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<stdlib.h>
#define MAX_WORDS 100

int main(void)
{
    int c, i=0, k=1, ch[MAX_WORDS] = {0};

    printf("enter the words:-\n");

    do
    {
        while((c=getchar())!=EOF)
        {
            if(c=='\n' || c==' ' || c=='\t')
                break;
            else
                ch[i]++;
        }
        i++;
    }
    while(i<MAX_WORDS);

    do
    {
        printf("%3d|",k);
        for(int j=1;j<=ch[k];j++)
            printf("%c",'*');
        printf("\n");
        k++;
    }
    while(k<10);
}
4

3 に答える 3