//il programma legge lo stdin ed estrae il numero float immesso //secondo le convenzioni classiche: // .1 ,1 0,1 0.1 -.1 -,1 sono gli unici ammessi #include int main() { char c; float n=0; float dec=0; int sign=1; int errore=0; do {c=cin.get(); if (c=='-' && sign==1 && dec==0) //se in testa c'e' il meno sign=-1; else if (c>='0' && c<='9') { //se e' immessa una cifra if (dec==0) {//cifra prima della virgola n*=10; n+=c-'0'; } else {//se e' stata gia' inserita la virgola n+=dec*(c-'0'); dec*=0.1; } } else if ((c=='.' || c==',' )&& dec==0) {//virgola o punto solo la prima volta dec=0.1; } else if (c=='\n') ;// deve uscire else errore=1; } while(c!='\n' && errore==0); //aggiorna il segno n*=sign; if (errore==1) cout << "Sintassi errata!" << endl; else cout << "Il numero immesso e': " << n; }