/* Conversione stringhe --> numeri interi. Scrivere una programma che legga una stringa rappresentante una costante intera (eventualmente con segno '-'). Se la sequenza e' sintatticamente corretta memorizzare il corrispondente numero intero in una variabile di tipo `int' e visualizzarlo; altrimenti visualizzare un opportuno messaggio. */ #include int main() { int num = 0; bool negativo = false; bool errore = false; int cont = 0; char str[20]; cout << "Inserire un numero intero: "; cin.getline(str, 20); for (unsigned i = 0; i < cin.gcount()-1; i++) { if (str[i] == '-') { if (negativo) { errore = true; break; } else negativo = true; ++cont; } else if (str[i] >= '0' && str[i] <= '9') { num *= 10; // Sottraendo questa quantita' si arriva // al numero corrispondente (ASCII). num += str[i] - 48; ++cont; } else { errore = true; break; } } if (negativo) { // L'utente ha inserito soltanto `-'. if (cont == 1) errore = true; else num *= -1; } if (errore == true) cout << "Sintassi errata!" << endl; else cout << "Il numero immesso e': " << num << endl; return 0; }