Come faccio ad evitare che quando l'utente inserisce una lettera, si crei un ciclo infinito?? Inoltre come faccio a mettere una lettera, per esempio Z maiuscola come sentinella di chiusura? Ho provato con
while ( (numero = getchar()) != 'Z') ma assume a questo punto numero come un valore 10.00.
Grazie.
// ESERCIZIO 5.9: arrotondamento.
// Un'applicazione della funzione floor è l'arrotondamento di un valore all'intero private vicino. L'istruzione:
// y = floor( x + .5 );
// arrotonda il numero x all'intero più vicino ed assegna il risultato a y. Scrivete un programma che legga diversi numeri ed usi l'istruzione precedente per arrotondare ognuno di essi all'intero più vicino. Per ogni numero processato stampate sia il numero originario sia il numero arrotondato.
// Codice sorgente:
#include <stdio.h>
#include <math.h>
int main( void ) {
puts( "Questo è un programma che stampa l'arrotondamento per ogni numero inserito, al quale viene aggiunta la quantità 0.5, all'intero più vicino.\n" );
printf( "%s", "Inserire un numero (0.0 per terminare): " );
double numero;
scanf( "%lf", &numero );
while( numero != 0 ) {
double x = numero + 0.5;
double y = floor( x );
printf( "\n%-13s%-13s%-13s", "NUMERO", "NUMERO", "NUMERO" );
printf( "\n%-13s%-13s%-13s", "ORIGINARIO", "INCREMENTATO", "ARROTONDATO" );
printf( "\n%-13lf%-13lf%-13lf", numero, x, floor( x ) );
printf( "%s", "\n\nInserire un numero (0.0 per terminare): " );
scanf( "%lf", &numero );
}
}