#include#define IN 0
#define OUT 1
#define MAXWORD 11
#define MAXHIST 15
int main()
{
int c, i, j, nc, state;
int len, maxvalue, ovflow;
int wl[MAXWORD];
state = OUT;
nc = 0;
ovflow = 0;
memset(wl, 0, sizeof(wl));
while((c = getchar()) != EOF)
{
if(c == '\n' || c == ' ' || c == '\t')
{
state = OUT;
if(nc > 0)
{
if(nc < MAXWORD)
{
++wl[nc];
}
else
{
++ovflow;
}
nc = 0;
}
}
else if(state == OUT)
{
state = IN;
nc = 1;
}
else
{
++nc;
}
}
maxvalue = 0;
for(i = 1; i < MAXWORD; ++i)
{
if(wl[i] > maxvalue)
{
maxvalue = wl[i];
}
}
//垂直方向直方图 开始
/*
for(i = 1; i < MAXWORD; ++i)
{
printf("%5d - %5d : ", i, wl[i]);
if(wl[i] > 0)
{
if((len = wl[i] * MAXHIST / maxvalue) <= 0)
{
len = 1;
}
while(len--)
{
putchar('*');
}
}
putchar('\n');
}
*/
//垂直方向直方图 结束
//水平方向直方图 开始
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("%3d ", i);
}
putchar('\n');
for(i = 1; i < MAXWORD; ++i)
{
printf("%3d ",wl[i]);
}
putchar('\n');
//水平方向直方图 结束
if(ovflow > 0)
{
printf("Here are %d words >= %d\n", ovflow, MAXWORD);
}
return 0;
}