Problema con lo switch

di il
6 risposte

Problema con lo switch

Salve, un problema che mi da sui nervi.
Nel mio switch vorrei che ci sia un caso in cui se c'è uno spazio, mi esca in output scritto SPAZIO.
Esempio:
       case '\b':cout<<"spazio"; 
       break;
ho provato anche in altri modi:
       case '\0':cout<<"spazio"; 
       break;
       case ' ':cout<<"spazio"; 
       break;
Ma il codice non se ne scende giù, non esegue ciò che voglio, ma non c'è nessun errore nel debug. Forse perché non si devono inserire quei valori? Ditemi voi che io non ne son capace.Grazie

6 Risposte

  • Re: Problema con lo switch

    Molto strano, in C, provando in questo modo funziona.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char a;
    
        printf("Inserisci spazio\n");
        scanf("%c", &a);
    
        switch(a)
        {
            case ' ': printf("Hai inserito uno spazio!!!\n");
                      break;
            default: printf("ERRORE!");
        }
        return 0;
    }
    
  • Re: Problema con lo switch

    franluigi ha scritto:


    Salve, un problema che mi da sui nervi.
    Nel mio switch vorrei che ci sia un caso in cui se c'è uno spazio
    Il caso deve essere

    case ' '

    ma per capire cosa non va devi mostrare tutto il codice della funzione e in particolare la variabile usata e l'input
  • Re: Problema con lo switch

    Allora, io ho utilizzato case ' ' ma comunque non funziona(già l'avevo provato).
    Non posso mostrarvi tutto il codice, e nemmeno l'intero switch, essendo tutto basato sullo switch. E' un programmino semplice che traduce i caratteri in linguaggio morse, e riproducendo anche i beep adatti. Quindi, eccovi una parte di codice:
     
    /*
    Codice MORSE
    
    */
    
     #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <time.h>
    #include <conio.h>
    #include <windows.h>
    #include <stdio.h>
    #include <math.h>
    
    using namespace std;
    
    char parola;
    int i=0, L=-1;
    
    int main ()
     {
     
             cout<<"Traduttore morse -- by THE DARK KING\n\n";
             cout<<"ASCII Standard ENGLISH\n\n"; 
             morse:
             cout<<"Testo: ";
           do
           {
           cin>>parola;
           if((parola>=65)&&(parola<=90))     //Se è maiuscola
           parola=parola+32;                  //Converti in minuscola e dopo converti :Dswitch(parola)
           {
           //A-Z
           case 'a': cout<<" ._ ";Beep(700,60);Beep(700,210);
           break;
           case 'b': cout<<" _... ";
           Beep(700,210); Beep(700,60);Beep(700,60);Beep(700,60);
           break;
           //Continua con le altre lettere e punteggiature
           case ' ':cout<<"uno spazio"; 
           break;
           }//Chiusura switch
          
           
           
           
           
           
           } while((parola>=32)&&(parola<=126)); 
           cout<<"\nCARATTERI NON STAMPABILI\n";
          system("pause");
                 return 0;
                 
    }
  • Re: Problema con lo switch

    La cin non la usare per accettare spazi.

    Utilizza la getline con un array di char
  • Re: Problema con lo switch

    Si, ma nel case non posso usare il getline -.-

    Ho provato anche con \\b, ma mi legge solo la b
  • Re: Problema con lo switch

    Ma cosa c'entra la getline e il case?

    Devi inserire la frase (compresi gli spazi) in una stringa con la getline e con un ciclo esamini carattere dopo carattere da passare allo switch.

    Addirittura potresti non usare lo switch enorme (anzi, dovresti proprio non usare lo switch) ma lavorare con un array di char indirizzato dal valore ASCII della lettera.
Devi accedere o registrarti per scrivere nel forum
6 risposte