No tak sa pokusim.
Mas tam cyklus
while ((c = getchar()) != EOF) { - pokym sa nacitany znak c nerovna koncu
++nc; // zvacsi premennu nc o jedna
if (c == '\n') //ak sa c rovna znaku '\n' - novy riadok
++nl - tak sa zvacsi premenna nl
if (c == ' ' || c == '\n' || c == '\t') //ak je c nejaky biely znak
inword = NO; //tak inword sa rovna NO - nachadza sa mimo slova
else if (inword == NO){ // inak, ak sa inword rovna NO
inword = YES; //tak sa inword rovna YES - cize je vnutri slova, to aby sa pri dalsom prechode cyklom to iste slovo nepocitalo viackrat
++nw; // zvysi sa premenna nw, ktora znaci pocet slov
na konci sa uz len vypisu.
Pridaj si na koniec este getch(), aby si videl vysledky programu.
A snaz sa trochu dodrziavat "Stabnu kulturu".
Kód:
#include <stdio.h>
#include <conio.h>
#define YES 1
#define NO 0
int main(void)
{
int c, nl, nw, nc, inword;
inword = NO;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
inword = NO;
else if (inword == NO) {
inword = YES;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
getch();
return 0;
}
Na dosiahnute konca suboru (hodnoty makra EOF) pouzi pri vstupe skratku Ctrl+Z(pod Win), pod Linuxom Ctrl+D.
