Elenet.net
0 voti

Volevo creare con le strutture il gioco della monetina testa o croce, ho fatto un modo ma mi da degli errori, mi può aiutare? grazie ;)

------------------------------------------------------------------------------------------------

#include <iostream>
#include <cstring>
using namespace std;

struct moneta {
                string testa;
                string croce;
              };
              
int main ()
{
    
    moneta mon[1];
    int i, scelta;
    
    do
    {
       cout<<" Testa o Croce ? ";
        cout<< "\n 1) testa \n 2) croce";
        
        cin>>scelta;
        
        switch (scelta)
        {
            case 1: 
                    for ( i=0; i<=1; i++)
                    {
                       if (mon[i].testa = scelta)
                       {
                          cout<<" \n  HAI VINTO ! " ;
                          cout<< mon[i].testa;
                       }
                    };
                break;
                
             
            case 2:
                    for ( i=0; i<=1; i++)
                     {
                        if (mon[i].croce = scelta)
                         {
                           cout<<" \n  HAI VINTO ! " ;
                         cout<< mon[i].croce;
                         }
                     }
              break;
              
         default : break;  
    }
    
      
      
  } while ((scelta >= 1) and (scelta <= 2));
    
    
}

quesito posto 17 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti)
  

2 Risposte

+1 voto
Risposta migliore
Soddisfiamo la tua curiosità e il tuo interesse

Generazione di numeri casuali in C++ La libreria C + + standard include un

generatore di numeri pseudo-casuali per generare numeri casuali.

Per generare un numero casuale si usa la funzione  rand () che fa parte della libreria stdlib.h

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
    int  num = rand (); // genera un numero casuale

cout << num << endl;
    return 0;
}

// puoi modificare il programma per stampare 0 o 1 casuali in questo modo

se il numero è pari stampa 0 , se dispari stampa 1

#include <iostream>
#include <stdlib.h>

using namespace std;

int main(int argc, char **argv)
{
    int  num = rand (); // genera un numero casuale

 if ((num %2) ==0) // numero pari

{

num = 0;

}

else

{

    num=1;

}

cout << num << endl;
    return 0;
}

Il generatore di numeri pseudo casuali produce una sequenza di numeri che danno l'impressione che sia casuale,

in realtà la sequenza ad un certo punto si ripete e alla fine è prevedibile.

Per ovviare a questo inconveniente è necessario far generare la sequenza partendo ad ogni esecuzione con un valore diverso (un seme diverso).

Per questo occorre includere l’header <time.h> e richiamare prima della funzione rand() la funzione srand()

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main(int argc, char **argv)
{
     srand (time (NULL)); // genera un numero casuale a partire da time
    
     /*  La funzione  srand  () inizializza il generatore di numeri con un valore
      che passiamo come argomento (tra le  parentesi tonde) nel nostro caso  time(NULL)
      
      la funzione  time(NULL)  restituisce un valore intero ottenuto
      dal clock  (orologio del sistema ) interno, pari al  
numero di secondi trascorsi dal 1/1/1970  (se scriviamo l’istruzione    cout<<time(NULL)<<endl;   possi
amo vedere su video il valore del tempo espresso in secondi dal 1/1/1970 all’istante in cui abbiamo fatto
eseguire il programma).  
In questo modo l’istruzione:     
srand (time(NULL));
inizializza il generatore ad ogni esecuzione con un  valore
(seme) diverso e le successive istruzioni rand()
produrranno valori differenti.
In genere abbiamo bisogno di chiamare srand () , una sola volta
,  prima della prima chiamata la funzione rand ()  
      
      */
    
    int num = rand();
    cout <<" \n numero uscito = "<< num <<"      ";
    num = rand();
    cout <<" \n numero uscito = "<< num <<"      ";
    num = rand();
    cout <<"\n  numero uscito = "<< num <<"      ";
    
if ((num %2) ==0) // numero pari

{ num = 0; }

else {  num=1; }

cout << num << endl;
    return 0;
}
risposta inviata 21 Marzo 2017 da nicolo' guarino Esperto (687 punti)
Selezionata 21 Marzo 2017 da ChiaraCarli
Grazie mille prof  :D
Ma quindi l'esercizio del gioco testa o croce come si fa inserendo i numeri casuali? può farmi vedere alla fine come viene questo programma? grazie.
+2 voti
Ci vuole una funzione Random , che genera dei numeri casuali tra 0 e 1.

Ne parliamo in classe perchè è una lezione che dovro' fare , e la faremo la prossima settimana  appena terminate le liste dinamiche pile e code..

Dopo faremo le doppie liste , e tratteremo ancora sulle funzioni ricorsive per la generazione di alberi binari e immettendo dentro dei valori casuali o random

Grazie del tuo impegno , continua così ..
risposta inviata 20 Marzo 2017 da Laura Guccione Corsista (149 punti)
Peccato!  Ero molto curiosa
Allora lo lascio da parte e quando sarà  il momento lo completerò. Grazie
La generazione dei numeri casuali è un aspetto importante in moltissime applicazioni. Per la generazione degli stessi, esistono diversi tipi di algoritmi, che rendono i numeri "casuali" più o meno prevedibili. Ovviamente la prevedibilità può essere un aspetto cardine nel corretto funzionamento dell'applicativo.

Un primo caso è "True Random Numbers", cioè numeri davvero casuali

per generare numeri davvero casuali, la macchina misura qualche tipo di grandezza fisica legata a fenomeni esterni alla macchina stessa, per esempio potrebbe misurare il decadimento della radioattività di un atomo.
Dato che secondo la fisica quantistica non è prevedibile esattamente, un acker non potrà prevedere il numero estratto.
In alternativa si potrebbero osservare fenomeni atmosferici, o semplicemente misure di tempo legate alla pressione di un tasto sulla tastiera. Tutti aspetti in cui il caso è fondamentale.

Un secondo caso è "Pseudorandom numbers", cioè numeri Pseudo-casuali

in questo caso la macchina utilizza un numero detto "seed", seme, sulla base del quale, attraverso sequenze di calcoli vari, vengono generati numeri che, sembrano casuali, ma che in realtà si possono prevedere. In situazioni quali videogiochi e simili, questo aspetto può non comportare un problema. a titolo di esempio, quando in C++ invochiamo il metodo "srand", non facciamo altro che cambiare il seme, a partire dal quale il generatore, ovvero il metodo rand(), genera i numeri pseudo-casuali.
Grazie mille!

Domande correlate

0 voti
2 risposte
quesito posto 26 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti) | 223 visite
+2 voti
1 risposta
quesito posto 15 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti) | 103 visite
0 voti
1 risposta
quesito posto 26 Marzo 2017 in Classe terza da ChiaraCarli Corsista (49 punti) | 129 visite
778 domande
1,565 risposte
639 commenti
1,445 utenti