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

[Guida] AL C++ Parte 6.
(Questo messaggio è stato modificato l'ultima volta il: 23/07/2011, 20:35 da Luxor.)

Iscritto
Messaggi: 891
Discussioni: 58
Registrato: 03-2011
Mix: 0
A differenza del programma di prima, questo conterà le righe, quindi:
    C++ Programming
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int c, nl;
  6.  
  7. nl = 0;
  8.  
  9. while ((c = getchar()) != EOF)
  10. if (c == '\n')
  11. {
  12. ++nl;
  13. printf("%d\n", nl);
  14. }
  15. }


Quindi definiamo c, nl variabili e diamo valore a nl (0)
Poi iniziamo il nostro ciclo while"quando"->((c = getchar()) diverso da EOF (fine del file)
if"se"-> (c == 'n') == "è uguale a" mentre un singolo = sta per "assegnamento" cioè "è", Un carattere scritto tra apici ( ' ' ) rappresenta un valore intero uguale al valore numerico del carattere nella rappresentazione interna della macchina, quindi si parla di "costante di tipo carattere" malgrado sia solo un altro modo di scrivere un intero piccolo es. 'A' è una costante di tipo carattere (intero piccolo) che nello standard ASCII ha valore 65 che è la rappresentazione interna del carattere A, quindi per capire meglio 'A' = 65 quindi '\n' rappresente SOLO il valore del carattere newline che è 10, quindi '\n' è un carattere singolo mentre "\n" è una costante stringa... non è facilissimo da capire ma se ci si perde 10 secondi si capisce Asd...

(è abbastanza corta come parte, ma soltanto perche la prossima dovrebbe essere molto piu lunga)

23/07/2011, 20:34
#1
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
Ma tu li provi sti programmi prima di postarli? Asd
No perchè questo programma così configurato più che contare le righe restituisce il numero progressivo della riga inserita (o per la precisione di quante volte è stato premuto INVIO) e sopratutto non si può uscire dal ciclo...l'unico modo di chiudere il programma è chiudere dalla 'x'. Blush

23/07/2011, 20:52
#2
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 23/07/2011, 22:34 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Sky, ti sbagli
l'ho provato e ho trovato interessante vedere come anche un programma come questo possa far ragionare e possa nascondere delle insidie e delle sorprese...
All'inizio ci sono cascato e mi sono detto che avevi ragione, ma poi mi sono detto... ma scusa, visto che il getchar non torna fino a quando premi invio, per forza uno dei caratteri deve essere \n ovvero l'invio... quindi il ciclo DOVEVA FINIRE... perchè non finisce?? perchè non esce alla prima riga inserita?

Perchè EOF NON E' l'INVIO, è End Of File...
e che cacchio è End Of File?? qui ho tirato fuori i miei antichi ricordi dell'MS-DOS
a quei tempi quando creavi un file dal prompt col comando:

copy con nomefile.txt

e poi cominciavi a scrivere qualcosa, poi per dirgli che avevi finito di creare il file (EOF)
dovevi premere insieme i tasti CTRL-Z
cosi mi sono detto, vuoi vedere che è quello?

provate un po' per credere Asd

con CTRL-Z il programma si chiude Happywide


PS: non ho controllato, ma penso che il senso di sto programma sul libro sia PROPRIO quello di contare le righe che hai scritto, sai Sky? (del resto immagino che la variabile nl stia per New Line)


digger
23/07/2011, 22:32
#3
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 23/07/2011, 23:31 da digger.)

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
io l'ho già provato e funge, nel senso che ogni volta che premi invio ti da un numero progressivo indicante la riga inserita (o quante volte hai premuto invio)
La storia del CTRL+Z non la sapevo e ho provato..
In effetti premendo quella combinazione di tasti sullo schermo appare
Codice:
^Z
e premendo poi invio il programma esce dal ciclo...

Giusto per precisare EOF, almeno per quanto riguarda il visual studio, vale -1 Blush


23/07/2011, 23:23
#4
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 23/07/2011, 23:41 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
(23/07/2011, 23:23)Skyline@69 Ha scritto:

[Per vedere i link devi REGISTRARTI.]

Giusto per precisare EOF, almeno per quanto riguarda il visual studio, vale -1 Blush

bravo hai tirato fuori un'altro punto che può interessare,
quando vedete usare nomi in MAIUSCOLO in un programma C/C++ cominciate pure a sospettare che si tratti di un #define o di una costante

Per vedere al "volo" il define possiamo posizionare il cursore del mouse sullo stesso e attendere un attimo, ci comparirà come tips:

[Immagine: 01717-05daa522-e8fe-470c-bfc2-e1c76c2b569d.png]

Se vogliamo "andare" al punto dove viene definito per vederlo meglio possiamo cliccare in un punto qualunque del nome (ad es. in mezzo a EOF) e premere F12

[Immagine: 01717-6bb60b32-ce5a-4003-9348-5fc82c4ce5ec.png]



digger
23/07/2011, 23:39
#5
Cerca

WarRock Hacks Coder
Messaggi: 940
Discussioni: 47
Registrato: 03-2011
Mix: 0
Sono un genio Asd Asd

24/07/2011, 8:44
#6
Cerca


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [Guida] Al C++ Parte 8. Luxor 12 2,609 28/07/2011, 14:42
Ultimo messaggio: digger
  [Guida] Al C++ Parte 7. Luxor 5 1,639 27/07/2011, 14:51
Ultimo messaggio: digger
  [Guida] Al C++ Parte 1. Luxor 7 2,433 25/07/2011, 23:38
Ultimo messaggio: digger



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