Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [c++; Consiglio]

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    77

    [c++; Consiglio]

    codice:
    do{
            cout<<"Inserisci la scelta";
            cin>>scelta;
            switch(scelta){
                    case "SI": P1;
                    case "NO": P2;
                    case "Si": P1;
                    case "No":P2;
            }    
    }while((scelta!="SI")||(scelta!="Si")||(scelta!="sI")||(scelta!="si")||(scelta!="NO")||(scelta!="No")||(scelta!="nO")||(scelta!="no"));

    Osservate questo codice, mi serve un consiglio.
    1) Esiste una funzione che mi permette di non scrivere tutte le condizioni del while?

    2) Devo per forza scrivere tutti i case per ogni conbinazione della parola "SI" e "NO"?

    Grazie in anticipo!!!
    InTec

  2. #2
    dai una occhiata alle funzioni di libriria tolower e toupper, per covertire l'input tutto in maiuscolo o minuscolo e confrontarlo con la stringa opportuna
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    77
    Originariamente inviato da mondobimbi
    dai una occhiata alle funzioni di libriria tolower e toupper, per covertire l'input tutto in maiuscolo o minuscolo e confrontarlo con la stringa opportuna
    ciao
    sergio

    Sai dove posso trovarle???
    Ti ringrazio!!!
    InTec

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Qui
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    77
    La variabile scelta è una stringa, come posso utilizzare lo switch??
    InTec

  6. #6
    Non puoi usarlo. Lo switch funziona solo con variabili numeriche intere.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    77
    codice:
    char scelta
    do{
        cout<<"INSERIRE SCELTA---";
        cin>>scelta;
        switch(scelta){
            case '1': P1; break;
            case '2': P2; break;
        }
    }while(scelta!='2');
    Se per esempio ho una conzidione di questo genere se inserisco "111", non mi da errore anzi, mi manda a P1;
    Come posso risolvere questo problema???
    Grazie
    InTec

  8. #8
    Originariamente inviato da InTec
    codice:
    char scelta
    do{
        cout<<"INSERIRE SCELTA---";
        cin>>scelta;
        switch(scelta){
            case '1': P1; break;
            case '2': P2; break;
        }
    }while(scelta!='2');
    Se per esempio ho una conzidione di questo genere se inserisco "111", non mi da errore anzi, mi manda a P1;
    E' normale, scelta è una variabile char (quindi un numero intero), cin ci inserisce solo il primo carattere ('1') e lo switch ti manda a P1.
    Come posso risolvere questo problema???
    Che problema?
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    77
    Originariamente inviato da MItaly
    E' normale, scelta è una variabile char (quindi un numero intero), cin ci inserisce solo il primo carattere ('1') e lo switch ti manda a P1.
    Questo problema lo risolto, guarda cosa ho fatto

    codice:
    string scelta;
    do{
        cout<<"INSERIRE SCELTA---";
        getline(cin,scelta);
        switch(scelta[0]){
            case '1':{ 
                    if(scelta[1]==0) P1;
                    break;
            }
            case '2':ist2;
            case '3':ist3;
    }while(scelta[0]!='3');
    Perchè quando cominci a lavorare con getline, dopo se usi cin non te lo vede;
    InTec

  10. #10

    codice:
    char scelta
    
    do{
        cout<<"INSERIRE SCELTA---";
        cin>>scelta;
        switch(scelta){
            case '1': P1; break;
            case '2': P2; break;
        }
    }while(scelta!='2');
    Se per esempio ho una conzidione di questo genere se inserisco "111", non mi da errore anzi, mi manda a P1;
    Come posso risolvere questo problema???
    Grazie
    io userei degli if incatenati se si hanno poche condizioni! oppure non so se lo strcmp funziona con lo switch!! ora nn ho il tempo di provare..appena ho la possibiltà provo!! se riuscite provate voi e poi comunicate

    (la condizione d'uscita dello switch è errata dato che se premo '1' lui mi uscirebbe dal ciclo)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.