Ti riporto un altro esempio... sempre sulla sentinella. Se uso -1 e l'esercizio è questo:
http://prntscr.com/fq1gh
Il codice sorgente è questo:
// Stampare i numeri da 1 a 10 con un ciclo do...while.
#include <stdio.h>
int main( void )
{
int numeroPartenza;
int numeroFine;
puts( "Inserire numero iniziale (numero iniziale < numero finale). -1 per terminare." );
scanf( "%d", &numeroPartenza );
while ( numeroPartenza != -1 ) {
puts( "Inserire numero finale (numero finale > numero iniziale)." );
scanf( "%d", &numeroFine );
while ( numeroFine < numeroPartenza ) {
puts( "Deve essere numero finale > numero iniziale.\n" );
puts( "Inserire numero iniziale (numero iniziale < numero finale). -1 per terminare." );
scanf( "%d", &numeroPartenza );
while ( numeroPartenza != -1 ) {
puts( "Inserire numero finale (numero finale > numero iniziale)." );
scanf( "%d", &numeroFine );
}
}
printf( "Numeri da %d a %d\n\n", numeroPartenza, numeroFine );
do {
printf( "%d\t", numeroPartenza );
++numeroPartenza;
} while ( numeroPartenza <= numeroFine );
puts( "\n\nInserire numero iniziale (numero iniziale < numero finale). -1 per terminare." );
scanf( "%d", &numeroPartenza );
}
}
Qui in questo esercizio, dopo aver inserito volutamente un numero finale < numero iniziale ho voluto terminare l'esecuzione del programma con la sentinella -1 ma il compilatore ha inteso -1 come numero iniziale < numero finale e non ha terminato il programma....
La domanda è dunque.... quale sentinella potrei utilizzare in questo caso? perchè se uso EOF cioè <Ctrl>z esce una virgoletta destra rossa ma non termina il programma!!!..... come si può vedere nel printscreen:
http://prntscr.com/fq1ka avendo modificato la sentinella nel sorgente... So che è una domanda stupida ma se con EOF concludessi potrei risolvere il problema.
Questo è lo stesso sorgente con EOF.
// Stampare i numeri da 1 a 10 con un ciclo do...while.
#include <stdio.h>
int main( void )
{
int numeroPartenza;
int numeroFine;
puts( "Inserire numero iniziale (numero iniziale < numero finale). EOF per terminare." );
scanf( "%d", &numeroPartenza );
while ( numeroPartenza != EOF ) {
puts( "Inserire numero finale (numero finale > numero iniziale)." );
scanf( "%d", &numeroFine );
while ( numeroFine < numeroPartenza ) {
puts( "Deve essere numero finale > numero iniziale.\n" );
puts( "Inserire numero iniziale (numero iniziale < numero finale). EOF per terminare." );
scanf( "%d", &numeroPartenza );
while ( numeroPartenza != EOF ) {
puts( "Inserire numero finale (numero finale > numero iniziale)." );
scanf( "%d", &numeroFine );
}
}
printf( "Numeri da %d a %d\n\n", numeroPartenza, numeroFine );
do {
printf( "%d\t", numeroPartenza );
++numeroPartenza;
} while ( numeroPartenza <= numeroFine );
puts( "\n\nInserire numero iniziale (numero iniziale < numero finale). EOF per terminare." );
scanf( "%d", &numeroPartenza );
}
}
Grazie.