Aiuto craps vettori

di il
3 risposte

Aiuto craps vettori

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

  • Re: Aiuto craps vettori

    Nessun aiuto su questo codice??
  • Re: Aiuto craps vettori

    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.
  • Re: Aiuto craps vettori

    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