Oppure

Loading
03/08/11 12:41
GPULoad
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:

#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 03/08/11 12:42
aaa
03/08/11 12:57
TheKaneB
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:
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 03/08/11 12:58
aaa
03/08/11 13:22
GPULoad
Ma se metti continue sotto printf non toglie il printf?

Comunque ho corretto come tu hai detto:

#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 03/08/11 13:29
aaa
03/08/11 13:27
TheKaneB
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.
aaa
03/08/11 13:32
GPULoad
Ho editato il post sopra prima che tu scrivessi.
aaa
03/08/11 13:41
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.
aaa
03/08/11 16:49
GPULoad
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 :rotfl:
aaa
03/08/11 17:32
Nullable
Postato originariamente da GPULoad:

Mi autobanno, grazie :rotfl:


Non ti disperare, succede.
aaa