Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116

    [c] Problema con Switch

    Salve a tutti :-)

    allora stavo buttando giu qualkosa per fare un po di pratica e ho riscontrato un piccolo problema, ovvero, come primo codice ho scritto questo.:

    codice:
    int main()
    {
    
        int sel;
         
        system("color 0a"), ("cls");
        
        do
        {
        
        printf("\t\t *** Gestore Spesa ***\n\n");             
        printf("\t 1. Aggiungi Elemento\n\t 2. Modifica Elemento\n\t 3. Contralla Lista Negozio\n\t 0. Esci\n\nSelezionare Opzione: ");
        
        
        scanf("%d", &sel);
        
        
        
        switch (sel)
        {
               case 0: break;
               case 1: 
                    system("cls");
                    printf ("case 1");
                    break;
               
               case 2: 
                    system("cls");
                    printf ("case 2");
                    break;
                    
               case 3:
                    system("cls");
                    printf ("case 3");
                    break;     
               
               default:
                       system ("cls");
                       printf(" \n\tErrore - ! Opzione non riconosciuta !\n\n");
                    
        }
        
        } while ( sel!= 0);
        
        
        printf("\n\n");
        system("pause");
    }
    successivamente ho fatto una legera modifica perche' quando viene inserito una lettera inceve che un numero si inceppa il programma, pertanto ho scritto questo:

    codice:
    int main()
    {
    
        char select;
        int sel;
         
        system("color 0a"), ("cls");
        
        do
        {
        
        printf("\t\t *** Gestore Spesa ***\n\n");             
        printf("\t 1. Aggiungi Elemento\n\t 2. Modifica Elemento\n\t 3. Contralla Lista Negozio\n\t 0. Esci\n\nSelezionare Opzione: ");
        
        
        scanf("%c", &select);
        
        
        sel = (int)select - 48;
        
        switch (sel)
        {
               case 0: break;
               case 1: 
                    system("cls");
                    printf ("case 1");
                    break;
               
               case 2: 
                    system("cls");
                    printf ("case 2");
                    break;
                    
               case 3:
                    system("cls");
                    printf ("case 3");
                    break;     
               
               default:
                       system ("cls");
                       printf(" \n\tErrore - ! Opzione non riconosciuta !\n\n");
                    
        }
        
        } while ( sel!= 0);
        
        
        printf("\n\n");
        system("pause");
    }
    ma qui il problema e come se i breack non funzionano....qualkuno mi sa dire il xke?

    p.s.
    alla linea
    codice:
    sel = (int)select - 48;
    volevo scrivere:
    codice:
    (int)sel = (int)select - 48;
    ma il compilatore mi da errore
    codice:
     $(".canaglia").show()

  2. #2
    Non puoi scrivere (int)sel = .... perchè non puoi fare il casting in questo modo, quindi il compilatore non è pazzo ...
    Il break ti fa uscire dal blocco selettivo ma non dal while, naturalmente ...
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it L'avatar di Ifrit
    Registrato dal
    Oct 2005
    Messaggi
    116
    si infatti, il problema e ke nonostante il break il case default viene esegito ugualmente
    codice:
     $(".canaglia").show()

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    30
    puoi risolverlo leggendo da input UN carattere ma poi utlizzando i case in questo modo:
    codice:
    case '0': 
    .................
    case '1':
    .........
    nel modo che stai usando tu confronti se il carattere effettivamente inserito corrisponde nella tabella ascii ai valori 0 1 2 ecc. cosa che mi sembra sia poco fattibile visto che sono caratteri "deprecati" utilizzati in precedenza in telescriventi ecc. ma ora nn più utilizzati.. ma di questo non son sicuro dovrei riguardare..

    prova a utilizzare i case con i due apici ' ' .


    edit:
    ho controllato la tabella ascii.. ora ti faccio un esempio.
    codice:
    char c;
    scanf("%c",&c);
    switch(c){
    case 0:
    ...... //entra qui quando c == '\0'
    case 1:
    ........ //controlla che c sia un carattere speciale che indica "start of heading"
    
    /* Mentre effettivamente */
     case '0':
    ...... // entra qui quando c == '0' ovvero proprio lo 0
    non so se son stato chiaro.. altrimenti chiedi pure.
    ti incollo il link alla pagina di wiki se vuoi darci un occhio
    http://it.wikipedia.org/wiki/ASCII

    fa sapere se puoi ti funziona :P

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.