Informatica 2 Liceo Scientifico Scienze Applicate/Es (do-while) Indovina il numero

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Esercizio Indovina il numero (0-9)[modifica]

Il computer pensa a un numero intero compreso fra 0 e 9 (estremi inclusi) e tu lo devi indovinare. Quando ci riesci il computer visualizza il numero di tentativi. Questo esercizio deve essere risolto con l'istruzione do-while, infatti non si conoscono a priori il numero di tentativi(ripetizioni) ma sicuramente almeno un tentativo lo devi fare per indovinare il numero segreto. Il computer per generare dei numeri a caso (valore random ) utilizza una funzione rand() che ogni volta viene richiamata genera un valore appartenente a una sequenza pseudocasuale ( cioe' appartenenti a una sequenza di numeri che sembrano casuali) tutta la sequenza pseudocasuale e' determinata da un particolare valore detto seme (seed) che puo' essere deciso tramite la funzione srand(numeroseme), per evitare che il computer riproponga sempre la stessa sequenza prima del comando rand() usa (basta una sola volta) il comando srand(time(NULL)) dove l'istante di esecuzione del programma (time(NULL)) diventa il valore del seme.Per utilizzare rand e srand devi aggiungere (INCLUDE) la libreria cstdlib mentre per il time la libreria time.h . La funzione rand genera dei numeri da 0 a un numero molto grande (almeno 32000 e rotti) se vogliamo riportare questo numero casuale nella fascia 0-9 basta calcolare il resto della divisione per 10 cioe' x=rand()%10; questo perché il resto di una divisione per 10 assume solo i valori compresi fra 0 e 9, se vogliamo invece generare un numero fra 7 e 15 ( i possibili numeri sono 9) usiamo x=7+rand()%9;

#include <cstdlib>
#include <iostream>

#include <time.h>
using namespace std;
/* indovina il numero segreto pensato dal computer
   il numero e' compreso fra 0 e 9 
*/
   
int main(int argc, char *argv[])
{
    int numerosegreto, numero,conta;
    bool trovato=false;
    srand(time(NULL));
    numerosegreto= rand()%10;
    conta=0;
    do
    {cout<<"indovina il numero";
     cin>>numero;
     conta++;
    }
    while(numerosegreto!=numero);
    
    cout<<"complimenti hai vinto"<<endl;
    cout<<"hai impiegato "<<conta<<" tentativi"<<endl;
    
    
    system("PAUSE");)) ntogli questa riga se usi il dev c++ 5.xx
    return EXIT_SUCCESS;
}

Esercizio Indovina il numero (0-9999), ti aiuto io[modifica]

Il computer pensa a un numero intero compreso fra 0 e 9999 (estremi inclusi) e tu lo devi indovinare. Quando ci riesci il computer visualizza il numero di tentativi.Il computer quando sbagli ti dice se il numero inserito e' minore o maggiore di quello da indovinare

#include <cstdlib>
#include <iostream>

using namespace std;
/* indovinare un numero intero compreso fra 0 e 9999
   obiettivo: uso struttura ciclica do while (controllo in coda)
              uso funzione rand e srand
              generare un numero casuale (random) 
              ricerca su internet e comprensione reference sui comandi rand
              e srand, inizialmente l'esercizio è risolto senza l'uso di srand
              operazione di modulo
              concetto seme, sequenza pseudoaleatoria 
*/
int main(int argc, char *argv[])
{ int numerosegreto;
  bool trovato ;
  int n,conta;
  
  srand ( time(NULL) );
  cout <<"INDOVINA IL NUMERO FRA 0 e 9999"<<endl ;
  numerosegreto = rand()%9999;
  trovato = false;
  conta=0;
  
  do
  { cout<<"inserisci il numero ? ";
    cin>>n;
    conta++;

    if (n==numerosegreto)
       {  trovato=true;
          cout <<"Complimenti hai indovinato il numero"<<endl ;
          cout<<"hai impiegato "<<conta<<" tentativi"<<endl;
       }
    else
       { if (numerosegreto > n) cout <<"prova con un numero maggiore"<<endl;
         else                   cout <<"prova con un numero minore"<<endl;
         
       }   
     
  }
  while(trovato == false);
  
  system("PAUSE");
  return 0;
}


naturalmente potevi risolvere il problema anche con

#include <cstdlib>
#include <iostream>

using namespace std;
/* indovinare un numero intero compreso fra 0 e 9999
   obiettivo: uso struttura ciclica do while (controllo in coda)
              uso funzione rand e srand
              generare un numero casuale (random) 
              ricerca su internet e comprensione reference sui comandi rand
              e srand, inizialmente l'esercizio è risolto senza l'uso di srand
              operazione di modulo
              concetto seme, sequenza pseudoaleatoria 
*/
int main(int argc, char *argv[])
{ int numerosegreto;
  int n,conta;
  
  srand ( time(NULL) );
  cout <<"INDOVINA IL NUMERO FRA 0 e 9999"<<endl ;
  numerosegreto = rand()%9999;
  conta=0;
  
  do
  { cout<<"inserisci il numero ? ";
    cin>>n;
    conta++;

   if (numerosegreto > n)    cout <<"prova con un numero maggiore"<<endl;
   else if(numerosegreto<n)  cout <<"prova con un numero minore"<<endl;
         
  }
  while(n!=numerosegreto);

 cout <<"Complimenti hai indovinato il numero"<<endl ;
 cout<<"hai impiegato "<<conta<<" tentativi"<<endl;
  
  system("PAUSE");
  return 0;
}

per casa vai sul sito e studia la funzione rand() e srand()