Salve,ho appena finito di studiare i numeri casuali e subito mi è venuto in mente di fare un semplice programma che ha come scopo quello di indovinare un numero casuale.
Il numero casuale è compreso tra 1 e 10,si hanno solo 3 possibilità,ogni volta il programma da un suggerimento all'utente se il numero da indovinare sia maggiore o minore di quello inserito.
Ad esempio se il numero casuale è 8,e l'utente digita 5,viene restituito un messaggio:inserire un numero più grande o viceversa.
In un primo momento ho svolto cosi il programma:
Lo so il programma è stupido ma io già ho incontrato una difficoltà,cioè nel momento in cui si inserisce per la terza volta un numero sbagliato esce di nuovo la riga
oppure
e in seguito esce la scritta hai perso.
Ecco io vorrei che si evitasse questa situazione cioè alla 3 possibilità se uno sbaglia dovrebbe uscire solo una scritta hai perso.
Ho cercato di risolvere questo problema in un altro metodo,che funziona bene,ma il codice non mi convince molto,ecco:
Che ne pensate?
Il numero casuale è compreso tra 1 e 10,si hanno solo 3 possibilità,ogni volta il programma da un suggerimento all'utente se il numero da indovinare sia maggiore o minore di quello inserito.
Ad esempio se il numero casuale è 8,e l'utente digita 5,viene restituito un messaggio:inserire un numero più grande o viceversa.
In un primo momento ho svolto cosi il programma:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void )
{
int i,n,x;
srand( time (NULL) ); /* cambia il seme in base al tempo */
n=1+(rand() %10); /* genera un numero casuale compreso tra 1 e 10 */
for (i=1;i<=3;i++) {
printf( "Inserisci un numero: " );
scanf( "%d" , &x );
if (x>n) {
printf( "inserisci un numero più piccolo\n" );
}
if (x<n) {
printf( "inserisci un numero più grande\n" );
}
if (x==n) {
printf( "Hai vinto\n" );
return 0; /* cercavo un modo che se la condizione fosse vera,mi avrebbe fatto uscire dal programma senza stampare la riga successiva,così funziona,ma dubito che sia il modo corretto */
}
}
printf( "Hai perso,il numero da indovinare era %d\n" , n );
return 0;
}
Lo so il programma è stupido ma io già ho incontrato una difficoltà,cioè nel momento in cui si inserisce per la terza volta un numero sbagliato esce di nuovo la riga
Codice:
printf( "inserisci un numero più piccolo\n" );
Codice:
printf( "inserisci un numero più grande\n" );
Ecco io vorrei che si evitasse questa situazione cioè alla 3 possibilità se uno sbaglia dovrebbe uscire solo una scritta hai perso.
Ho cercato di risolvere questo problema in un altro metodo,che funziona bene,ma il codice non mi convince molto,ecco:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void )
{
int i,n,x;
srand( time (NULL) );
n=1+(rand() %10);
for (i=1;i<=2;i++) {
printf( "Inserisci un numero: " );
scanf( "%d" , &x );
if (x>n) {
printf( "inserisci un numero più piccolo\n" );
}
if (x<n) {
%ari/535.7Content-Type: applicanbsp; printpt: text/html,application/xhtml 9 grande\n" );
}
if (x==n) {
printf( "Hai vinto\n" );
return 0;
}
}
for (i=3;i<=3;i++) { /* in modo che all'ultima possibilità stampi solo hai vinto o perso */
printf( "Inserisci un numero: " );
scanf( "%d" , &x );
if (x!=n) {
printf( "Hai perso,il numero da indovinare era %d\n" , n );
}
else {
printf( "Hai vinto\n" );
}
}
return 0;
}
Che ne pensate?
Ultima modifica da un moderatore: