Mam pytanie. Chciałabym stworzyć, to co jest na wyjściu, bardziej podobne do histogramu. Program wyprowadza histogram długości słów. Dziękuje za wszelkie odpowiedzi ;)
#include <stdio.h>
#define IN 1 /* wewnatrz slowa */
#define OUT 0 /* poza slowem */
/* histogram dlugosci slow w danych wejsciowych */
int main()
{
int c, i, j, state = OUT;
int wordlength[50]; /* dlugosc slowa po kolei */
int histogram[50]; /* czestosc wystepowania slowa o podanej liczbie liter */
for(i = 0; i < 50; ++i){
wordlength[i] = 0;
histogram[i] = 0;
}
i = 0;
while((c = getchar()) != EOF){ /* pobieranie slow, zliczanie liter */
if (c == ' ' || c == '\n' || c == '\t'){
if (state == IN){
state = OUT;
i++; /* zmienia na nastepny indeks bo nastepne slowo */
}
}else if (state == OUT){
state = IN; /* poczatek slowa */
++wordlength[i];
}else
++wordlength[i]; /* wewnatrz slowa */
}
/*
for(i = 0; i < 50; ++i)
printf(" %d", wordlength[i]);
printf("\n");
*/
for(i = 0; i < 50; ++i){ /* przerzucanie do nastepnej tablicy czestosci liter */
for(j = 0; j < 50; ++j){
if((wordlength[i] == j) && (wordlength[i] != 0))
++histogram[j];
}
}
/*
for(i = 0; i < 50; ++i)
printf(" %d", histogram[i]);
printf("\n");
*/
/* drukowanie histogramu */
for (i = 1; i < 11; ++i){
printf("%d", i);
for(j = histogram[i]; j > 0; --j)
{
printf("|");
}
printf("\n");
}
return 0;
}