Problemi di ricorsione con il C

di il
2 risposte

Problemi di ricorsione con il C

Sto preparando un esame in C che riguarda un gioco.
Adesso mi è sorto un problema, ho creato una funzione che mi elenca il menu di scelta; tale funzione la richiamo nel main dove sono andata ad inserire anche il switch. Ecco adesso se io inserisco un numero di menù sbagliato parte il default, ma se io volessi mandare il messaggio di errore e dopo riproporre il menù di scelta per inserire il numero giusto, come posso fare, non posso richiamare l'esecuzione del main dal principio?
Aiuto sono nel panico più completo!!!
Grazie e ciao a tutti
Vale

2 Risposte

  • Re: Problemi di ricorsione con il C

    Ciao,

    Ho l'impressione che tu abbia assunto un approccio sbagliato nei confronti del problema... cerca di suddividere la cosa nelle sue componenti e di separare l'I/O dalla parte grafica, può esserti d'aiuto questo semplice pseudocodice:
    finito=false;
    while(!finito)
    {
       disegna_menu();
       scelta=input();
       switch(scelta)
      {
        case 1: ...azione1();break;
        case 2: ...azione2();break;
        case QUIT: finito=true;break;
        default:break;
      }
    }
    In questo modo, nel caso si scelga di uscire dal programma si esce dal while, altrimenti si resta dentro ad un ciclo che disegna il menù ed attende un'operazione...
    Se si inserisce un'opzione non acettabile si ottiene di ridisegnare il menù, niente vieta, invece del default:break; di scrivere qualcosa come default:mostra_messaggio();attendi_tasto();break;

    NB: Non è un caso di ricorsione... fai molta attenzione, un menù implementato ricorsivo può avere effetti piuttosto deleteri (visto che l'utente può andare avanti e indietro con le scelte indefinitamente) ed esaurire lo stack molto velocemente.

    Ciaociao
  • Re: Problemi di ricorsione con il C

    Grazie mille per il prezioso aiuto, sono riuscita a risolvere il primo scalino del mio programma!!!
    ciao ciao
Devi accedere o registrarti per scrivere nel forum
2 risposte