Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383

    [c] switch e uscita dal programma

    Sono alle prese con un programma che fa uso di opzioni di scelta.
    La variabile char x puo assumere tramite uno switch case i valori a,b,c,d,e e ovviamente default.
    La parte di codice riguardante default e':
    codice:
    default:                        
                 printf("Opzione inesistente\n");                        
                 break;
    Questo switch e' inserito all'interno di un ciclo do...while e nella condizione appunto c'e':
    codice:
    while(x!='q');
    che mi fa uscire dal programma.Come e' chiaro dal codice il problema sorge in quanto ogni volta che premo q per uscire viene si eseguito il comando,ma si trascina dietro quel fastidioso opzione inesistente.
    E' ovviamente logico che sia cosi e ne capisco la causa,ma non so come risolvere.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prevedi un

    case 'q':
    break

    che non faccia nulla ma evita il messaggio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Si, in questo caso non farebbe niente, ma si ripeterebbe il ciclo e non si uscirebbe dal programma.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da cristianc
    Si, in questo caso non farebbe niente, ma si ripeterebbe il ciclo e non si uscirebbe dal programma.
    E perche' mai?

    Se non mostri il resto del codice non si capisce il perche' ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    lo switch si ripete perche e' inserito in un ciclo.
    Se io inserissi 'q' nello switch non verrebbe fatto quello che gli vorrei assegnare,cioe l'uscita dal programma,Non verrebbe fatto niente ed uscirebbe dallo switch..case ma non impedirebbe la successiva esecuzione del ciclo.Il ciclo come l'ho messo io(e quindi anche lo switch) si ripete proprio finche non premo 'q'.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Lo mostri il codice, come ti avevo chiesto ... ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    codice:
      while (x != q) {
    ....
        switch (x) {
          case .. : ....
            break;
          case q :
            break;
          default :
            ....
            break;
        }
    ...
      }
    ...
    anch'io la ho interpretato come oregon e penso che il suo suggerimento si corretto.

    ciao
    sergio

  8. #8
    Oregon ha ragione: se il tuo è il caso seguente
    codice:
    do {
      switch(x)
      {
        case('a'):
          break;
        case('b'):
          break;
        case('c'):
          break;
        case('d'):
          break;
        case('q'):
          break;
        default:
          printf("Opzione inesistente\n");
          break;
      }
    }while(x!='q');
    Perché non dovrebbe uscire? l'opzione di controllo del ciclo while verrebbe eseguita comunque...
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    do
    {
    printf("\n\tMENU DI PROVA\n\n\ta) Per immettere dati\n\tb) Per determinare il maggiore\n\tc) Per determinare il minore\n\td) Per ordinare\n\te) Per visualizzare\n\n");
    printf("[PER USCIRE PREMERE q]\t\tScelta(a,b,c,d,e): ");
    x=getchar();
    while(!getchar());
    switch(x) {
    case 'a':
    .....
    case 'b':
    .....
    case 'c':
    .....
    case 'd':
    .....
    case 'e':
    .....
    default:
    .....
    }
    printf("\n");
    } while(x!='q');


    Tutto qui

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da cristianc


    Tutto qui
    E l'hai provato?? Perche', come ti ho detto, funziona regolarmente ... se inserisci la

    case 'q':
    break;

    il programma termina regolarmente ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.