Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

[Guida] Al C++ Parte 7.

Iscritto
Messaggi: 891
Discussioni: 58
Registrato: 03-2011
Mix: 0
Questo programma conterà righe, parole e caratteri quindi:
    C++ Programming
  1. #include <stdio.h>
  2.  
  3. #define IN 1
  4. #define OUT 0
  5.  
  6. int main()
  7. {
  8. int c, nl, nw, nc, state;
  9.  
  10. state = OUT;
  11. nl = nw = nc = 0;
  12. while ((c = getchar()) != EOF)
  13. {
  14. ++nc;
  15. if (c == '\n')
  16. ++nl;
  17. if (c == ' ' || c == '\n' || c == '\t')
  18. state = OUT;
  19. else if (state == OUT)
  20. {
  21. state = IN;
  22. ++nw;
  23. }
  24. }
  25. printf("%d %d %d\n", nl, nw, nc);
  26. }


(a me non funziona, digger dice che funziona... date la colpa a lui Asd Asd Asd)

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")


26/07/2011, 18:53
#1
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
ahah bast***
bravo per il post Smile



digger
26/07/2011, 19:09
#2
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 26/07/2011, 21:57 da Skyline@69.)

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
A me non va nemmeno, e non ho nemmeno il tempo di provarlo perchè devo scappare...sarà per domani dopo pranzo Blush

@Luxor -> è da un pò che ho un dubbio: ma tu per caso sai qual'è la differenza tra ++var e var++ ??
No perchè se lo sai non mi spiego perchè ti ostini sempre a usare ++var Asd

Edit: Come immmaginavo c'è sempre la storia del ctrl+z per uscire, ergo funziona...

Ma ti devi escogitare qualcosa per evitare di premere ctrl+z per uscire :cool:

26/07/2011, 21:56
#3
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Sky non fare il rompiscatole Happywide
Sono solo programmini che servono a far capire alcuni concetti di base del C, non è che devono essere l'ultimo ritrovato della tecnologia ... chissene anche se devi premere CTRL-Z
Tanto onestamente il C non lo userà mai nessuno per fare ste cose, alla fine lo userete per farci le hacks e poco altro, per tutto il resto via di VB.NET Wink

Comunque la differenza di ++var e var++ è che nel primo caso PRIMA incrementa la var e POI la utilizza nelle espressioni, nel secondo caso, cioè var++ è il contrario.

Quindi in una cosa tipo:

++var;
oppure
var++;

non c'è nessuna differenza, il risultato è lo stesso perchè incrementiamo e basta.

Ma metti di fare:

if (++var==5)
{
}

non è la stessa cosa di

if (var++ ==5)
{
}

Mettiamo che partiamo con var uguale a 4
Nel primo caso var viene incrementata, poi confrontata con 5, lo è, quindi esegue il codice tra {}
Nel secondo caso var viene confrontata, non è 5, non esegue il codice tra {} POI la incrementa e diventa 5






digger
26/07/2011, 23:11
#4
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
Io lo sapevo ma volevo vedere se lo sapeva lui, non ho mica chiesto a te Asd
Così magari se non lo sapeva era una buona occasione per spiegarglielo :cool:

27/07/2011, 14:17
#5
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
oops Tounge


digger
27/07/2011, 14:51
#6
Cerca


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [Guida] Al C++ Parte 8. Luxor 12 2,613 28/07/2011, 14:42
Ultimo messaggio: digger
  [Guida] Al C++ Parte 1. Luxor 7 2,435 25/07/2011, 23:38
Ultimo messaggio: digger
  [Guida] AL C++ Parte 6. Luxor 5 1,893 24/07/2011, 8:44
Ultimo messaggio: Skyline@69



Utenti che stanno guardando questa discussione: 1 Ospite(i)