Questo programma conterà righe, parole e caratteri quindi:
C++ Programming
#include <stdio.h>
#define IN 1
#define OUT 0
int main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF)
{
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT)
{
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
(a me non funziona, digger dice che funziona... date la colpa a lui
)
Allora i due define (IN e OUT) hanno valore 1 e 0 e indicano all'interno della parole o se all'esterno della parola (1 interno 0 esterno)
definiamo le variabili che sono; c, nl,nw,nc,state
poi gli diamo un valore che sarà state("stato") = OUT (0)
e nl = nw = nc = 0
Apriamo il nostro ciclo, quando ((c = getchar()) != EOF) "quando quello che scriviamo è diverso da EOF (fine del file)" allora->
++nc; aumenta di 1 nc
poi if"se"-> (c == '\n') "se c è uguale al valore di \n (newline) allore-> ++nl; aumenta di 1 nl
poi if"se"-> c è uguale a uno spazio bianco O c è uguale a newline O c è uguale a tabulazione allora-> state = OUT (allora siamo fuori da una parola)
else if "altrimenti" (state == OUT) (se l'IF sopra non dovesse essere accettato, quindi c non vale nessuno dei 3 valore allora svolge automaticamente questa funzione)-> state = IN (Siamo in una parola) e quindi ++nw; aumenta di 1 nw
Infine printf"scrivi"->("%d %d %d\n", nl, nw, nc) ricordo che il primo % si lega con la prima variabile scritta dopo quindi nl, il secondo % si lega con il secondo (nw) ecc... ( % sta per "scrivi qui")