GPULoad (Normal User)
Newbie
Messaggi: 14
Iscritto: 28/07/2011
|
Ho appena iniziato con la programmazione in C e stò frequentando alcuni corsi, il mio problema sta in un programmino che ho fatto per allenarmi, il programma deve scrivere 10 numeri da 1 a 10, saltare il numero 5 e stampare a schermo: Il ciclo ha saltato il numero 5 ed ha continuato, ma appena lo avvio mi spuntano 10 righe con scritto quello sopra in grassetto. Il codice è questo:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x; for (x = 1; x <= 10; x++){ if (x == 5){ continue; printf ("%d ", x); } printf ("\n\nIl ciclo ha saltato il numero 5 ed ha continuato\n\n"); } system("PAUSE"); return 0; }
|
Cosa c'è che non và? A me sembra tutto a posto.
Ultima modifica effettuata da GPULoad il 03/08/2011 alle 14:42 |
|
TheKaneB (Member)
Guru^2
Messaggi: 1792
Iscritto: 26/06/2009
|
il ciclo contiene un'espressione logica (controlla se x è uguale a 5) che condiziona la stampa.
in italiano:
se x è uguale a 5 allora:
- stampa messaggio
- continua il ciclo
altrimenti:
- stampa x
in C:
Codice sorgente - presumibilmente C/C++ |
if (x == 5)
{
printf ("\n\nIl ciclo ha saltato il numero 5 ed ha continuato\n\n");
continue;
}
else
{
printf ("%d ", x);
}
|
capito il ragionamento? ;-)
Ultima modifica effettuata da TheKaneB il 03/08/2011 alle 14:58 |
|
GPULoad (Normal User)
Newbie
Messaggi: 14
Iscritto: 28/07/2011
|
Ma se metti continue sotto printf non toglie il printf?
Comunque ho corretto come tu hai detto:
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x; for (x = 1; x <= 10; x++){ if (x == 5) { printf ("\n\nIl ciclo ha saltato il numero 5 ed ha continuato\n\n"); continue; } else { printf ("%d ", x); } system ("PAUSE"); return 0; }
|
Adesso non mi fa compilare perchè c'è un'errore di sintassi, più precisamente nella parentesi graffa dopo return.
Ultima modifica effettuata da GPULoad il 03/08/2011 alle 15:29 |
|
TheKaneB (Member)
Guru^2
Messaggi: 1792
Iscritto: 26/06/2009
|
Postato originariamente da GPULoad:
Ma se metti continue sotto printf non toglie il printf? |
No, le istruzioni vengono eseguite in ordine.
Prima c'è printf, quindi stamperà una stringa, poi viene "continue" quindi ritornerà all'inizio del ciclo for, incrementando la x.
|
|
GPULoad (Normal User)
Newbie
Messaggi: 14
Iscritto: 28/07/2011
|
Ho editato il post sopra prima che tu scrivessi.
|
|
Nullable (Normal User)
Expert
Messaggi: 217
Iscritto: 12/07/2011
|
Postato originariamente da GPULoad:
Ma se metti continue sotto printf non toglie il printf? |
No perchè prima viene eseguita la printf() e poi il continue.
Postato originariamente da GPULoad:Adesso non mi fa compilare perchè c'è un'errore di sintassi, più precisamente nella parentesi graffa dopo return. |
Non hai chiuso la graffa del for. |
|
GPULoad (Normal User)
Newbie
Messaggi: 14
Iscritto: 28/07/2011
|
Postato originariamente da Nullable:
Postato originariamente da GPULoad:
Ma se metti continue sotto printf non toglie il printf? |
No perchè prima viene eseguita la printf() e poi il continue.
Postato originariamente da GPULoad:Adesso non mi fa compilare perchè c'è un'errore di sintassi, più precisamente nella parentesi graffa dopo return. |
Non hai chiuso la graffa del for. |
Mi autobanno, grazie |
|
Nullable (Normal User)
Expert
Messaggi: 217
Iscritto: 12/07/2011
|
Postato originariamente da GPULoad:
Mi autobanno, grazie |
Non ti disperare, succede. |
|