Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c] creare menu

  1. #1

    [c] creare menu

    buonasera,
    vorrei creare un menu di scelta per il mio programma che dovrà svolgere alcune funzioni.

    l'idea era la seguente

    ..
    int selection;
    do
    {
    switch(selection)
    {
    case 0:
    go1();
    break;
    case 1:
    go2();
    break;
    default:
    error();
    break
    }
    }while(exit!=-1);
    }

    il problema viene quando selection assume valori non interi.. es: se selection assumesse il valore diun carattere il programma entrerebbe in loop infinito.

    come posso risolvere a questo?
    esiste una funzione che dato in ingresso una variabile restituisca il suo tipo?

    ciao
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    bhè...pensandola in maniera molto semplice...basta usare i caratteri...ovvero dichiarare la variabile "selection" di tipo char...così non hai questo problema...perchè riesci a gestire sia i numeri(da 0-9 ) sia le lettere eventualmente anche tutti gli altri simboli...se poi vuoi qualcosa di più raffinato...puoi utilizzare "selection" come stringa...non so se mi sono spiegato e se la mia soluzione potrebbe esserti utile per il tuo problema...comunque se ci sono ancora dubbi...chiedi

  3. #3
    grazie per la risposta,

    avevo gia pensato a getchar(); utilizzandola nel seguente modo:

    ..
    switch(getchar())
    {
    case 'a':

    ...
    }

    il problema sorge quando il controllo del programma viene passato a una sub function del main dove c'è un'altra getchar(); per un sub-menu.

    quest'utlimo getchar(); non funziona ma non so perchè
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  4. #4
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    bhè in genere con la getchar() ( e comunque anche usando la scanf() leggendo char ) c'è sempre il problema che leggendo un carattere, automaticamente si legge anche il carattere del return ( \n ) che viene letto nel momento che si preme invio nella lettura...quindi devi provare a eliminare questo return...per esempio introducendo un'altra getchar()...
    esempio:
    codice:
    int main ()
    {
       char selection;
       do {
            selection = getchar();
            getchar();
            switch(selection)
            {
            case 'a':
            ...
            }
      }
    ...}
    allo stesso modo però dovresti fare nelle sub funciotn che vengono richiamate...

  5. #5
    ti ringrazio,

    provo subito
    LE DONNE:
    COME E' POSSIBILE SPERARE DI CAPIRLE SE LORO STESSE NON RIESCONO A FARLO?

  6. #6
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    de nada...poi posta se ci sei riuscito...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.