Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - ritornare a una printf dopo un if
Forum - C/C++ - ritornare a una printf dopo un if

Avatar
effe (Normal User)
Newbie


Messaggi: 1
Iscritto: 26/10/2009

Segnala al moderatore
Postato alle 9:39
Venerdì, 06/11/2009
premetto che sono ancora un principiante con il c ma volevo sapere se posso tornare alla prima printf quando si esce dal if? grazie...

...
printf("che programma vuoi usare?\n""\n1.calcolatrice\n""2.convertitore\n"
                "\nscelta: ");
    scanf_s("%d",&pr);

        if (pr!=1&&pr!=2) {
            printf ("hai sbagliato a scegliere\n");}
...

PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 12:06
Venerdì, 06/11/2009
sei già arrivato ai cicli (while, for) ? :k:

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 16:07
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da effe:

premetto che sono ancora un principiante con il c ma volevo sapere se posso tornare alla prima printf quando si esce dal if? grazie...



Certo basta che la riga prima del tuo printf dichiari ad esempio returns:(nota è con la s)
e alla fine del tuo if ad esempio se chiedi vuoi uscire Si,No
Codice sorgente - presumibilmente C/C++

  1. returns:
  2. printf("Vuoi uscire(S,N)?");
  3. if(rix=="S"){
  4. return 0;
  5. }else{
  6. goto returns;
  7. }


:k:

PM Quote
Avatar
evilmight (Member)
Expert


Messaggi: 206
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 16:22
Venerdì, 06/11/2009
comunque stai molto attento quando usi 'goto' (evitalo!), rende il codice poco leggibile.

Ultima modifica effettuata da evilmight il 06/11/2009 alle 16:25
PM Quote
Avatar
ilmettiu (Ex-Member)
Pro


Messaggi: 88
Iscritto: 17/09/2009

Segnala al moderatore
Postato alle 16:24
Venerdì, 06/11/2009

PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 16:49
Venerdì, 06/11/2009
è risolvibilissimo con una cosa del tipo

Codice sorgente - presumibilmente C/C++

  1. while(uscita == 0) /*o FALSE se sai già cosa significa */
  2. {
  3. printf("Vuoi uscire?\n");
  4. scanf("%c", &scelta);
  5. if(scelta == 's')
  6.    uscita = 1;  /*o TRUE se sai già cosa significa */
  7. }



non richiede grandi conoscenze e non si usano i goto :k:

PM Quote
Avatar
evilmight (Member)
Expert


Messaggi: 206
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 17:43
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da ingMark:

è risolvibilissimo con una cosa del tipo

Codice sorgente - presumibilmente C/C++

  1. while(uscita == 0) /*o FALSE se sai già cosa significa */
  2. {
  3. printf("Vuoi uscire?\n");
  4. scanf("%c", &scelta);
  5. if(scelta == 's')
  6.    uscita = 1;  /*o TRUE se sai già cosa significa */
  7. }



non richiede grandi conoscenze e non si usano i goto :k:


veramente cosi non sarebbe proprio corretto, se io do il valore '3'(che è sempre TRUE) o 'c' il programma esce comunque.

PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 18:35
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da evilmight:
veramente cosi non sarebbe proprio corretto, se io do il valore '3'(che è sempre TRUE) o 'c' il programma esce comunque.



Non ho capito il senso della tua affermazione ;)

Se intendi che qualunque valore non-zero è true, hai ragione ma non ci interessa minimamente perchè a uscita il valore 1 glielo dai tu, puoi dargli 3 se vuoi :)

se gli passi il valore c o il valore 3 il programma non esce, esce solo con s(l'ho provato ora).
Che poi sia discutibile come soluzione non c'è dubbio, ma è stato lui stesso a dire che è un principiante e come principiante ha bisogno di soluzioni semplici :k:

Tuttavia un errore c'è (me ne sono accorto ora).
Se l'utente decide di non uscire, la scritta "vuoi uscire?" apparirà due volte di fila perchè il \n non viene mangiato.

quindi il codice corretto sarebbe

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  
  6. int uscita = 0;
  7. char scelta;
  8.  
  9. while(uscita == 0) /*o false se sai già cosa significa */
  10. {
  11. printf("Vuoi uscire?\n");
  12. scanf("%c", &scelta);
  13. while(getchar() != '\n');
  14. if(scelta == 's')
  15.    uscita = 1;  /*o true se sai già cosa significa */
  16. }
  17.  
  18. return 0;
  19. }





PM Quote
Avatar
evilmight (Member)
Expert


Messaggi: 206
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 18:45
Venerdì, 06/11/2009
Testo quotato

Postato originariamente da ingMark:

Testo quotato

Postato originariamente da evilmight:
veramente cosi non sarebbe proprio corretto, se io do il valore '3'(che è sempre TRUE) o 'c' il programma esce comunque.



Non ho capito il senso della tua affermazione ;)

Se intendi che qualunque valore non-zero è true, hai ragione ma non ci interessa minimamente perchè a uscita il valore 1 glielo dai tu, puoi dargli 3 se vuoi :)

se gli passi il valore c o il valore 3 il programma non esce, esce solo con s(l'ho provato ora).
Che poi sia discutibile come soluzione non c'è dubbio, ma è stato lui stesso a dire che è un principiante e come principiante ha bisogno di soluzioni semplici :k:

Tuttavia un errore c'è (me ne sono accorto ora).
Se l'utente decide di non uscire, la scritta "vuoi uscire?" apparirà due volte di fila perchè il \n non viene mangiato.

quindi il codice corretto sarebbe

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.  
  6. int uscita = 0;
  7. char scelta;
  8.  
  9. while(uscita == 0) /*o false se sai già cosa significa */
  10. {
  11. printf("Vuoi uscire?\n");
  12. scanf("%c", &scelta);
  13. while(getchar() != '\n');
  14. if(scelta == 's')
  15.    uscita = 1;  /*o true se sai già cosa significa */
  16. }
  17.  
  18. return 0;
  19. }






O scusa, ho avuto un momento di confusione :D

Ultima modifica effettuata da evilmight il 06/11/2009 alle 18:45
PM Quote