Problemi sentinella di chiusura ciclo di iterazione

di il
2 risposte

Problemi sentinella di chiusura ciclo di iterazione

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 ); 
  }
}

2 Risposte

  • Re: Problemi sentinella di chiusura ciclo di iterazione

    Se il programma deve accettare anche lettere, devi fare l'input di una stringa. Controlli quello che devi controllare per il valore sentinella, eventualmente converti da stringa a numero
  • Re: Problemi sentinella di chiusura ciclo di iterazione

    oregon ha scritto:


    Se il programma deve accettare anche lettere, devi fare l'input di una stringa. Controlli quello che devi controllare per il valore sentinella, eventualmente converti da stringa a numero
    Purtroppo le stringhe di testo non le ho ancora studiate. Sono alle funzioni.... Lo terrò presente per il futuro, comunque. Grazie lo stesso.
Devi accedere o registrarti per scrivere nel forum
2 risposte