Керниган, Ритчи. Задача: Напишите программу, печатающую гистограммы длин вводимых слов
Помогите разобраться. При выполнении консоль виснет и не отвечает на команды. В интернете нашел только варианты решений, которые предполагают в гистограмме показ того, насколько часто встречаются слова заданных длин. Я же хочу для тренировки показать на гистограмме длину каждого отдельного слова, по сути заменив каждый символ чертой, но консоль после первого перехода на новую строку зависает, как будто все зациклилось.
#define OUT 0 // внутри слова
#define IN 1 // вне слова
#define WORDNUM 10 // номер слова
int main()
{
int sym, state, i, j;
state = OUT;
int wlengths[WORDNUM]; // длины слов
for (i = 0;i < WORDNUM;++i)
wlengths[i] = 0;
while ((sym = getchar()) != EOF)
{
for (i = 0; i < WORDNUM;)
{
if ((sym == ' ' || sym == '\n' || sym == '\t') && (state == IN))
{
state = OUT;
++i;
}
else if (sym == ' ' || sym == '\n' || sym == '\t');
else
{
state = IN;
++wlengths[i];
}
}
}
for (i = 0;i < WORDNUM;++i)
{
printf("|%d|", i);
for (j = wlengths[i]; j > 0; --j)
{
printf("*");
}
printf("\n");
}
}