Valore char in variabile int

di il
11 risposte

Valore char in variabile int

Salve

ogni volta che scrivo un programmi in c++ cerco di correggere tutti i possibili bug che potrebbero esserci, però non sono mai riuscito ad capire come correggere questo: quando l'utente eseguente il programma al posto di inserire la variabile corretta ad esempio una int inserisce una variabile di tipo char. Quello che cerco di fare è un if che ha come condizione

if(a!=char)
{
...
}

non posso utilizzare string perche ho parecchi if nel programma e buggano tutto

Vi prego aiutatemi sto diventando matto.

11 Risposte

  • Re: Valore char in variabile int

    sasgaming88 ha scritto:


    Salve

    ogni volta che scrivo un programmi in c++ cerco di correggere tutti i possibili bug che potrebbero esserci, però non sono mai riuscito ad capire come correggere questo: quando l'utente eseguente il programma al posto di inserire la variabile corretta ad esempio una int inserisce una variabile di tipo char. Quello che cerco di fare è un if che ha come condizione

    if(a!=char)
    {
    ...
    }

    non posso utilizzare string perche ho parecchi if nel programma e buggano tutto

    Vi prego aiutatemi sto diventando matto.
    Potresti ricorrere al metodo good() dell'oggetto cin per vedere se qualcosa è andato storto durante la lettura. Per esempio nell'inserimento di un intero, il metodo good() ritorna false in caso di overflow o di inserimenti del tipo "w73r4r" (cioè il primo carattere non è un numero), ma ritorna true in caso di inserimenti del tipo "37dtf" (in pratica verranno considerati solo i primi caratteri che sono cifre").
    In ogni caso implementare una funzione apposita che inserita una stringa, la analizza ed in caso di esito positivo la converte in un intero, rimane a mio parere la cosa migliore (e peraltro anche abbastanza facile da fare)!
  • Re: Valore char in variabile int

    Scusate, non capisco
    Certamente un mio limite, ma chiedo per capire
    Una variabile char è già un intero,
    Se io faccio if x==32 vale vero sia per un int 32 o per un char ' '

    Come si fa a distinguere i due casi?
  • Re: Valore char in variabile int

    Lui, nella sua spiegazione senza capo né coda, intendeva una stringa, una sequenza di char. Come distinguere tra l'input di un intero e una stringa... E a sproposito ha scritto quella if senza senso...
  • Re: Valore char in variabile int

    Grazie sospettavo una cosa del genere
    ma all'ora mi domando, non conoscendo bene il c++
    qualr funzione restituirebbe una stringa e/o un intero
    o uno o l'altro, o mi manca qualcosa?
    casomai la domanda è come distinguere tra una stringa alfanumerica e una puramente numerica, giusto?
  • Re: Valore char in variabile int

    Sì, la domanda corretta sarebbe stata quella
  • Re: Valore char in variabile int

    oregon ha scritto:


    Lui, nella sua spiegazione senza capo né coda, intendeva una stringa, una sequenza di char. Come distinguere tra l'input di un intero e una stringa... E a sproposito ha scritto quella if senza senso...
    A quanto pare non mi sono spiegato bene, e ve ne do ragiore dato che ho scritto tutto di fretta
    farò un esempio per rendere piu chiara la domanda.

    mettiamo il caso che io dichiari la variabile A come numero intero quindi (int A;)

    diciamo che il programma chieda di inserire un valore NUMERICO ad A (cout<<"inserisci un valore numerico intero ad A: "<<endl; cin>>A;)

    noi abbiamo questa situazione dove l'utente che esegue il programma deve inserire un qualsiasi valore numerico INTERO ad A, però inserisce non un valore NUMERICO ma un valore CHAR. Simuliamo di eseguire il programma

    si apre il prompt o l'esecutore e dice:

    [inserisci un valore numerico intero ad A: _ ]

    l'utente inserisce il valore di A, non come intero ma come char:

    [inserisci un valore numerico intero ad A: K _ ]

    viene inserito il valore char K
    il prompt si bugga e addio.

    per evitare questa situazione potremmo fare così:

    int A;

    cout<<"inserisci un valore numerico intero ad A: "<<endl;
    cin>>A;

    if(A==char)
    {
    cout<<"devi inserire un valore NUMERICO, riavvia il programma per riprovare"<<endl;
    return 0;
    }
    else
    {
    cout<<"il valore di A inserito e': [A]"<<endl;
    return 0;
    }


    Ovviamente non si puo scrivere un if con condizione A==char perche non esiste e quindi mi chiedevo esisterà un modo per fare ciò?

    spero che questa spiegazione sia piu esaustiva
  • Re: Valore char in variabile int

    Hai letto il mio precedente post?

    Cmq le strade sono due:
    - utilizzare i metodi good(), clear(), ignore() dell'oggetto cin;
    - implementare una funzione che analizza una stringa ed eventualmente la converte in int.

    Io ti consiglio la seconda.
  • Re: Valore char in variabile int

    Per essere chiaro devi spiegarti in maniera chiara, però

    Vabbé abbiamo capito il messaggio. Per esplicitare il consiglio di nippolo, una possibile strada può essere:
    #include <iostream> 
    #include <regex> 
    using namespace std; 
    int main(){ 
        string in; 
        regex is_integer("(\\+|-)?[[:digit:]]+"); 
        do{
            cout << "Inserisci un numero intero" << endl; 
            cin >> in;
        }while(!regex_match(in, is_integer));
        int n = stoi(in);   
        cout << "Hai digitato " << n << endl;   
        return 0; 
    } 
  • Re: Valore char in variabile int

    "Il prompt si bugga" in che lingua è?

    Comunque, anche in C++ con
    
    	int a;
    
    	while (!(cin >> a))
    	{
    		cout << "Solo valori numerici" << endl;
    		cin.clear();
    		cin.ignore(numeric_limits<streamsize>::max(), '\n');
    	}
    	
    	cout << "valore " << a << endl;
    
    Il codice accetta solo valori numerici. Se scrivi

    465aaa

    viene accettata la prima parte numerica.
  • Re: Valore char in variabile int

    Nippolo ha scritto:


    Hai letto il mio precedente post?

    Cmq le strade sono due:
    - utilizzare i metodi good(), clear(), ignore() dell'oggetto cin;
    - implementare una funzione che analizza una stringa ed eventualmente la converte in int.

    Io ti consiglio la seconda.
    potresti farmi un esempio della seconda opzione che mi hai detto?
  • Re: Valore char in variabile int

    1) crei una stringa può essere string o array di caratteri
    2) dopo avere chiesto all'utente di inserire un numero riempi la stringa con quanto inserito dall'utente
    3) verifichi se ogni singolo karate della stringa è una cifra ( valore compreso tra codice di 0 e codice di 9)
    4) se no ripetere richiesta all'utente Sì sì trascrivere nel numero la stringa
Devi accedere o registrarti per scrivere nel forum
11 risposte