Program w C nie działa

0

Witam, jestem początkujący w świecie pisania programów. Korzystam z książki Jezyk C programowanie ANSI.
Przepisałem dokładnie program, ażeby dokładnie go przeanalizować, jednakże nie działa...
Czy ktoś mógłby poradzić?

#include <stdio.h>
#define MAXHIST 15
#define MAXWORD 11
#define IN 1
#define OUT 0

int main()
{
    int c,i ,nc,state;
    int len;  
    int maxvalue; 
    int ovflow; 
    int wl[MAXWORD];   
    
    state = OUT;
    nc =0;  
    ovflow = 0;    
    for (i=0; i<MAXWORD; ++i) {
        wl[i]=0;
    }
    
    while ((c=getchar())!=EOF) {
        
        if (c == ' ' || c == '\n' || 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];
        }
    }
    
    putchar('\n');
    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;
        }else
            len = 0;
        
        while (len> 0) {
            putchar('*');
            --len;
        }
        
        putchar('\n');
    }
    
    if (ovflow>0) {
        printf("There are %d words >= %d\n",ovflow,MAXWORD);
    }
    
    

    return 0;
}
 

Program nie działa wgl. Mogę wpisać nieustannie słowa, będę zobowiązany za pomoc!

0

Jeśli podajesz input ręcznie to musisz zakończyć go znakiem końca pliku (EOF). W zależności od używanego OS-a będzie to Ctrl + D lub Ctrl + Z.

0

Dzięki, nie miałem o tym pojęcia, a w książce o tym nie było wzmianki :)

Piwo dla Ciebie!

2

Można też przekierować dane z pliku, w tym przypadku nie trzeba żadnego EOF jawnie wstawiać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1