#include <stdio.h>
#define IN 1 /* 在单词内部 */
#define OUT 0 /* 在单词外部 */
#define MAXLEN 15 /* 单词的最大长度 */
#define MAXHIST 15 /* 直方图的最大长度 */
#define MAXWORD 50 /* 限制输入单词的上限 */
int wl[MAXWORD]; /* 用于存放单词长度的数组 */
/* 打印垂直方向的直方图 */
int main()
{
char c;
int wc=0;/*统计单词的个数*/
int len = 0;/*当前单词的长度*/
int state = OUT;
for(int i=0;i<MAXWORD;i++){
wl[i] = 0;/*数组初始化*/
}
/*while循环统计每个单词的长度*/
while((c=getchar())!=EOF){
if(c==' '||c=='\t'||c=='\n'){
if(state==IN){
if(len>MAXLEN){
len = MAXLEN;
}
wl[++wc] = len;
}
len = 0;
state = OUT;
}else if(state == OUT){
state = IN;
len++;
}else{
len++;
}
}
/*打印水平直方图*/
for(int i=1;i<=wc;i++){
printf("%3d\t",wl[i]);
for(int j=0;j<wl[i];j++){
printf(" * ");
}
printf("\n");
}
/*打印垂直直方图*/
for(int i=MAXHIST;i>0;--i){
for(int j=1;j<=wc;j++){
if(wl[j]%MAXHIST>=i){
printf(" * ");
}else{
printf(" ");
}
}
putchar('\n');
}
for(int i=1;i<=wc;i++){
printf(" %d ",wl[i]);
}
putchar('\n');
return 0;
}