Вывести гистограммы длин вводимых слов - C (СИ)

Формулировка задачи:

Собственно задание:Упражнение 1.13. Напишите программу, печатающую гистограммы длин вводимых слов. Гистограмму легко рисовать горизонтальными полосами. Рисование вертикальными полосами - более трудная задача.
#include <stdio.h>
#include <ctype.h>
#define IN 1
#define OUT 0
main ()
{
    int c, i, length, state, max, l;
    int wordl[15];
    state = OUT;
    l = 0;
    max = 0;
    for (i = 0; i < 15; ++i)
        wordl[i] = 0;
    while ((c=getchar()) != EOF)
        if (isalpha(c)){
            ++length;
            state = IN;
        }
        else if (state = IN) {
            state = OUT;
            ++wordl[length];
            if (max < length)
                max = length;
        }
    for (i = 0; i < max; ++i)
        printf("%4d", i);
    for (i = 0; i < 15; ++i) {
        printf ("%d", i);
        while (l <= wordl[i]*4) {
            ++l;
            printf("#");
        }
        }
}
Мутительное начало для меня. Помогите разобраться. Вылетает в segmentation fault.

Код к задаче: «Вывести гистограммы длин вводимых слов - C (СИ)»

textual
#include <stdio.h>
#include <conio.h>
 
int main()
{
    int word_leangth = 0;
    char c;
    int i;
 
    while((c = getchar()) != '\n')                 //читаем одну строку
    {
        if (c != ' ')                              //если символ не пробел
            word_leangth++;          //+1 буковка в слове
        else                                      //а вот если он пробел
        {
            for(i = 0; i < word_leangth; i++)    //печатаем длину слова палочками горизонтальными
                printf("_");
            printf("\n");          //переходим на след. строку
            word_leangth = 0;
        }
    }
 
    for(i = 0; i < word_leangth; i++) //печатаем длину посл. слова
        printf("_");                  //просто оно не заканчивается пробелом, а зак. знаком конца строки
 
    printf("\nPress any kay to exit\n");
    getch();                            //это просто чтобы спокойно посмотреть результат и выйти по нажатию любой кнопки
 
    return 0;
}

15   голосов, оценка 4.267 из 5


СОХРАНИТЬ ССЫЛКУ