Domanda Problema esercizio

ItsReal

Utente Electrum
30 Dicembre 2014
114
30
9
104
Buonasera, ho provato a svolgere un esercizio in C quale:

Imposta un valore random da 1 a 100 e chiedi all'utente di inserire un valore, in caso di valore troppo basso stampare "Too low. Try again: " stessa cosa per un valore più alto. In caso di numero corretto ( ovvero l'utente indovina il numero) stampa "You guessed the number!".
Ho svolto l'esercizio completamente, il problema è che ad ogni input dell'utente il valore random cambia, come mai?

C:
#include <stdio.h>
#include <stdlib.h>

int casualNumber(void); // prototipo

int main(void)
{
   // definisco variabili
   unsigned int numberEntered = 0;
  
   printf("Enter a number from 1 to 100: ");
   scanf("%u", &numberEntered);
  
   casualNumber();
  
   while (numberEntered != casualNumber()) {
  
      if (numberEntered < casualNumber()) {
      
         printf("Too low. Try again: ");
         scanf("%u", &numberEntered);
      }
      
      if (numberEntered > casualNumber()) {
      
         printf("Too high. Try again: ");
         scanf("%u", &numberEntered);
      }
      
      if (numberEntered == casualNumber()) {
      
         puts("You guessed the number!");
      }
   }
}
      
int casualNumber(void) // definisco funzione
{
   return 1 + (rand() % 100);
}
 
Ultima modifica:
Effettua la chiamata alla funzione "casualNumber" solo una volta e memorizza il suo valore di ritorno in una variabile che andrà a sostituire tutte le chiamate, nel ciclo while, a questa funzione. Come l'hai scritto tu non fai che generare un numero casuale 4 volte per iterazione, e questo numero casuale, o meglio pseudo-casuale, con molta probabilità sarà diverso per ogni chiamata. Sostanzialmente non generi un singolo numero pseudo-casuale ma più di uno per ogni confronto. E ricorda di inizializzare il seme per la generazione di numeri pseudo-casuali tramite la funzione "srand()". Il programma è poi migliorabile sotto vari punti di vista.