Uso cin come variabile booleana

di il
3 risposte

Uso cin come variabile booleana

Buongiorno, si tratta di un programma semplice semplice, un esercizio di un libro di programmazione c++, io programma su xubuntu e non ho dovuto che mi ricordi installare c++. Il testo è: Scrivere un programma che chieda all'utente di fornire un numero intero e che, poi, visualizzi le singole cifre del numero e la loro SOMMA. Ad esempio, le singole cifre di 3456 devono essere visualizzate come 3 4 5 6, e quelle di -2345 come 2 3 4 5. Sul libro da cui sto imparando c'è scritto che si può usare cin come variabile booleana, e ci sono anche esempi a riguardo. Ecco il programma che ho scritto io e che visualizza solo le cifre separate da uno spazio(2 3 4 5 6) il problema è che non dà indietro la loro somma come da ultimo enunciato, secondo me il cin aspetta, finito il numero il prossimo che non arriva e si blocca. Come si fa?

#include<iostream>
#include<istream>
using namespace std;
int main()
{
bool flag;
char ch;
int num;
int sum=0;
cout<<"inserisci un numero intero: "<<endl;
cin>>ch;
num=0;
if (ch=='-')
cin>>ch;

do
{

cout<<" "<<ch;
switch(ch)
{
case'0':
num=0;
sum=num+sum;
break;
case'1':
num=1;
sum=num+sum;
break;
case'2':
num=2;
sum=sum+num;
break;
case'3':
num=3;
sum=num+sum;
break;
case'4':
num=4;
sum=num+sum;
break;
case'5':
num=5;
sum=num+sum;
break;
case'6':
num=6;
sum=num+sum;
break;
case'7':
num=7;
sum=num+sum;
break;
case'8':
num=8;
sum=num+sum;
break;
case'9':
num=9;
sum=num+sum;
break;
default:
cout<<"inserisci una cifra intera non lettere o altri caratteri, solo il meno all'inizio, va bene"<<endl;

}
cin>>ch;
}
while (cin);
cout<<" la somma delle cifre del numero inserito è: "<<sum<<endl;
return 0;
}

3 Risposte

  • Re: Uso cin come variabile booleana

    Quando fai while(cin>>x) praticamente viene valutato l'input come condizione booleana , per uscire dal ciclo premi ctrl-d che equivale al carettere EOF.
  • Re: Uso cin come variabile booleana

    Cmq in basic_ios c'è
    operator void* e da c++/11 operator bool che controllano che cin non sia in stato di errore e ritornano di conseguenza.
    facendo l'input di ctrl-d (cioè EOF) mandi cin in stato di fine file e quindi il convertitore lo converte in false o nel puntatore nullo (dipende se usi c++/11 o una versione precedente). Facendo così esci dal while.
  • Re: Uso cin come variabile booleana

    Grazie... su libro questa spiegazione non c'era
Devi accedere o registrarti per scrivere nel forum
3 risposte