Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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:


Mamma diceva sempre che stupido è chi lo stupido fa.
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:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
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


Perl: "Il linguaggio che rende facili le cose facili, e possibili quelle difficili"

#!/usr/bin/perl6
PM Quote
Avatar
ilmettiu (Ex-Member)
Pro


Messaggi: 88
Iscritto: 17/09/2009

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


-NO-     Windows 95
-NO-     Windows 98
-NO-     Windows ME
-NO-     Windows XP
-LOL!-   WinXP.ProSP3+Crack+Keygen[Ita].iso
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:


Mamma diceva sempre che stupido è chi lo stupido fa.
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.


Perl: "Il linguaggio che rende facili le cose facili, e possibili quelle difficili"

#!/usr/bin/perl6
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. }






Mamma diceva sempre che stupido è chi lo stupido fa.
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


Perl: "Il linguaggio che rende facili le cose facili, e possibili quelle difficili"

#!/usr/bin/perl6
PM Quote