//il programma legge lo stdin ed estrae il numero float immesso //secondo le convenzioni classiche: //Float ::= Mantissa | Mantissa E Intero //Mantissa ::= Numerofloat | - Numerofloat //Intero ::= Numero | - Numero //Numerofloat ::= Numero | Numero . Numero | Numero , Numero //Numero ::= Numero | Cifra Numero //Cifra ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 #include int main() { char c; float n=0; float dec=0; int esp=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' || c=='E') ;// deve uscire else errore=1; } while(c!='\n' && c!='E' && !errore); //aggiorna il segno n*=sign; if (c=='E' && !errore) { sign=1; //lettura dell'esponente do { c=cin.get(); if (c=='-' && sign==1) //se in testa c'e' il meno sign=-1; else if (c>='0' && c<='9') { //se e' immessa una cifra esp*=10; esp+=c-'0'; } else if (c=='\n') ;// deve uscire else errore=1; } while (c!='\n' && !errore); //si include l'esponente nel numero for (int i=0;i