Jestem początkującym programistą języka C, naukę zacząłem w połowie października wraz z rozpoczęciem studiów.
Zakładam temat zbiorczy, w którym zamieszczać będę moje nie do końca działające programy.
Mój pierwszy problem: napisałem program tworzący histogram długości wpisywanych wyrazów i liczący białe znaki.
Program działa prawidłowo, ale tylko jeśli przed EOF zamieszczę znak spacji. Jeśli tego nie zrobię, program nie zliczy mi ostatniego wyrazu. Jak można to rozwiązać, w miarę prosty sposób, zrozumiały dla newbie?
#include <stdio.h>
/* program tworzy histogram dlugosci wyrazow */
int main() /* oraz wylicza ilosc bialych znakow. */
/* white - ilosc bialych znakow (spacja || '\n' || '\t') */
{ /* c - wpisywany znak; */
int c, i, white; /* i - ilosc liter w slowie; */
int dlugosc[10];
for(i=0; i<10; ++i)
dlugosc[i]=0;
i=0;
while((c=getchar())!= EOF)
{
if(c==' '||c=='\n'||c=='\t')
if(i==0)
++white;
else if(i<9)
{
++dlugosc[i];
++white;
i=0;
}
else
{
i=9;
++dlugosc[i];
++white;
i=0;
}
else
++i;
}
printf("\nNapisales");
for(i=1; i<10; ++i)
printf(" %d", dlugosc[i]);
printf(" wyrazow o dlugosciach 1, 2, 3, ..., 7, 8, (9 lub wiecej) znakow\noraz %d bialych znakow.\n", white);
return 0;
}