Aiuto craps vettori

di Anonimizzato7589 il
3 risposte
Scrivete un programma che esegua 1000 volte il gioco dei dadi craps, rispondendo a queste domande:
quanti giocatori vincono al prio lancio? al secondo ecc.
quante perdite...
ecc...


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int dado(void);

main()

{
      
      int lanci[1000] = {0};
      
      int x, y, somma, chiave, counter = 0;
      
      srand(time(NULL));
      
      for(x = 0; x < 1000; x++){
            
        somma = dado();
        
      if(somma == 7 || somma == 11){
                 
        lanci[x] = -1;
          
          }
          
     else
          
      if(somma == 2 || somma == 3){
                 
        lanci[x] = -2;
          
          }
          
      else
          
      if(somma == 12){
          
        lanci[x] = -2;
        
        }
        
      
      else
      
      chiave = somma;
      
      while(counter == 0){
                       
          chiave = dado();
             
      if(chiave == somma){
                
        lanci[x] = -1;
        
        counter = 1;
               }
      else
             
         if(chiave == 7){
                           
           lanci[x] = -2;
           
           counter = 2;
           
           }
           }
           }
      
      for(y = 1; y <= 50; y++){
                
         printf("\n\nLanci[%d] (vincite = -1-perdite = -2): %d", y, lanci[y]);
         
         }
          
          getch();
         }
          
         int dado (void)
         {
             int risultato1, risultato2, somma;
             
             
        risultato1 = rand() % 6 + 1;
        
        risultato2 = rand() % 6 + 1;
        
        somma = risultato1 + risultato2;
        
        return somma;
        }
ci sono quasi, solo non funziona il caso in cui non ci sia ne 7, ne 11, ne 2 ,3 ne 12...
non capisco il motivo...

3 Risposte

  • Nessun aiuto su questo codice??
  • Il problema è che non dici mai cosa dovrebbe fare l'algoritmo e se hai usato il debugger o meno. Io non conosco il gioco e aprendo wikipedia ci ho capito ben poco, quindi non conosco l'algoritmo.
  • Hai ragione sky...solo delle volte penso talmente rapidamente, che do per scontato...no ma ho risolto...posto il codice...in pratica l'algoritmo, si fonda sul tirare due dadi 1000 volte, sommare i risultati ottenuti dai due punteggi compresi da 1 a 6...dopodichè, subentrano le regole, ovvero, se la somma è inizialmente un 7 o un 11, cè una vincita secca, se invece dalla somma risulta 2,3 o 12, perdita secca..se dalla somma risultano i restanti numeri si va allo spareggio, ovvero..memorizzare il primo numero uscito, come punteggio del giocatore, ritirare i due dadi finchè si trova il primo numero tirato e allora si vince, oppure esce un 7, e alllora perdita netta.
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int dado(void);
    
    main()
    
    {
          
          int lanci[1000] = {0};
          
          int x, y, somma, chiave, counter = 0, verifica;
          
          srand(time(NULL));
          
          for(x = 1; x <= 1000; x++){
                
            somma = dado();
            
          if(somma == 7 || somma == 11){
                     
            lanci[x] = -1;
              
              }
              
         else
              
          if(somma == 2 || somma == 3){
                     
            lanci[x] = -2;
              
              }
              
          else
              
          if(somma == 12){
              
            lanci[x] = -2;
            
            }
            
          
    else
          
        counter = 0;
         
    while(counter == 0){
          
        verifica = dado();
        
        if(verifica == somma){
        
         lanci[x] = -3;
        
         counter = 1;
    }
    else
    
        if(verifica == 7){
                    
          lanci[x] = -4; 
          
          counter = 1;
    }         
    }
    }
            
          
          for(y = 1; y <= 50; y++){
                    
             printf("\n\nLancio[%d] (vincite = -1-perdite = -2): %d", y, lanci[y]);
             }
              
              return 0;
             }
              
             int dado (void)
             {
                 int risultato1, risultato2, somma;
                 
                 
            risultato1 = rand() % 6 + 1;
            
            risultato2 = rand() % 6 + 1;
            
            somma = risultato1 + risultato2;
            
            return somma;
            }
    
    Questo è il programma corretto, fatto solo con vettori, senza switch...
Devi accedere o registrarti per scrivere nel forum
3 risposte