Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema di mischiare  le carte  [C]
Forum - C/C++ - problema di mischiare le carte [C]

Avatar
alex91ander (Normal User)
Newbie


Messaggi: 2
Iscritto: 28/01/2011

Segnala al moderatore
Postato alle 18:49
Lunedì, 07/02/2011
Ragazzi Ho sviluppato il programma e me lo compila pure soltanto che quando lo eseguo, quando mi chiede di mischiare le carte si blocca cioè mi da errore ed appare una finestra di Microsoft con scritto :fare clic qui
Debug       Invia segnalazione errori       Non inviare

sapreste trovarmi l'errore???

secondo la traccia:
Sviluppare un algoritmo per la simulazione del gioco delle coppie di carte tra due
giocatori identificati dai loro nomi. Inizialmente “mischiare” un mazzo di carte
napoletane. L’algoritmo per mischiare le carte si basa sull’idea di scambiare
effettivamente a coppie le carte del mazzo; una variabile in input permette di indicare
quante volte si devono effettuare gli scambi. Viene scelto casualmente quale dei due giocatori deve iniziare il gioco. Vengono “scoperte” due carte la quale posizione è indicata dal primo giocatore. Se le due carte
hanno lo stesso valore il giocatore si aggiudica un punto e le due carte vengono scoperte.
Il giocatore continua finchè non sbaglia (non trova due carte uguali) e il turno passa
all’altro giocatore. Ad ogni turno il giocatore ha a disposizione l’elenco delle carte coperte e quelle scoperte. Il gioco termina quando si scoprono tutte le carte. Il giocatore che ha
totalizzato più punti vince la partita. Implementare il programma ed effettuare almeno 3 test.
Usare la function rand(), il cui prototipo è in <stdlib.h>, per generare a ogni
passo gli indici delle due carte da scambiare. Nei test, partire sempre dal mazzo
“ordinato” e poi visualizzare il mazzo “mischiato”.Si ricorda che, se numero_casuale è dichiarata di tipo int, allora la chiamata numero_casuale=rand()%(n+1); genera un numero casuale intero
(distribuzione uniforme) nell’insieme (0,1,2,..n).


Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.     #include <stdlib.h>
  3.     #include <string.h>
  4.  
  5.     typedef enum
  6.     {
  7.        denari,
  8.        bastoni,
  9.        spade,
  10.        coppe
  11.     }Semi_nap;
  12.  
  13.     struct carta
  14.     {
  15.        int valore;
  16.        Semi_nap seme;
  17.     };
  18.  
  19.     typedef carta Carta;
  20.  
  21.     void mischia_carte(Carta mazzo[],int n_carte,int qvmix);
  22.     void scambiare_carte(Carta mazzo[],int i, int j);
  23.  
  24.     int main()
  25.     {
  26.        int iniz,i,j,puntiprimogiocatore=0,puntisecondogiocatore=0,k=0,puntitotali,qvmix,n_carte=40;
  27.        char giocatoreuno[20], giocatoredue[20];
  28.        Carta mazzo[40]={
  29.           {1,denari},{2,denari},{3,denari},{4,denari},{5,denari},{6,denari},{7,denari},{8,denari},{9,denari},{10,denari},
  30.           {1,bastoni},{2,bastoni},{3,bastoni},{4,bastoni},{5,bastoni},{6,bastoni},{7,bastoni},{8,bastoni},{9,bastoni},{10,bastoni},
  31.           {1,spade},{2,spade},{3,spade},{4,spade},{5,spade},{6,spade},{7,spade},{8,spade},{9,spade},{10,spade},
  32.           {1,coppe},{2,coppe},{3,coppe},{4,coppe},{5,coppe},{6,coppe},{7,coppe},{8,coppe},{9,coppe},{10,coppe}};
  33.  
  34.        printf("Inserire il nome del primo giocatore/n");
  35.        gets(giocatoreuno);
  36.        printf("Inserire il nome del secondo giocatore/n");
  37.        gets(giocatoredue);
  38.  
  39.        iniz = rand()%2;
  40.        if(iniz==0)
  41.        {
  42.           printf("Il primo a giocare sarà %s/n",giocatoreuno);
  43.        }
  44.        else
  45.        {
  46.           printf("Il primo giocatore sarà %s/n",giocatoredue);
  47.        }
  48.        printf("Quante volte vuoi mischiare il mazzo?");
  49.        scanf("%d",&qvmix);
  50.        mischia_carte(mazzo,n_carte,qvmix);
  51.  
  52.        do
  53.        {
  54.           printf("le posizioni delle carte ancora coperte");
  55.           for(k=0;k<=39;k++)
  56.           {
  57.              if(mazzo[k].valore==0)
  58.              {
  59.                 continue;
  60.              }
  61.              else
  62.              {
  63.                 printf("%d",k);
  64.              }
  65.           }
  66.           if(iniz==0)
  67.           {
  68.              printf("%s scegli la posizione della prima carta/n",giocatoreuno);
  69.              scanf("%d",&i);
  70.              if(mazzo[i].valore==0)
  71.              {
  72.                 printf("la carta è gia stata scelta/n");
  73.                                                                                          
  74.              }
  75.              else
  76.              {
  77.                 printf("La carta scelta è %d, %s/n",mazzo[i].valore,mazzo[i].seme);
  78.              }
  79.              printf("%s scegli la posizione dell seconda carta/n",giocatoreuno);
  80.              scanf("%d",&j);
  81.              if(mazzo[j].valore==0)
  82.              {
  83.                 printf("la carta è gia stata scelta/n");
  84.                 continue;
  85.              }
  86.              else
  87.              {
  88.                 printf("La carta scelta è %d, %s/n",mazzo[i].valore,mazzo[i].seme);
  89.              }
  90.           }
  91.           else
  92.           {
  93.              printf("%s scegli la posizione della prima carta/n",giocatoredue);
  94.              scanf("%d",&i);
  95.              if(mazzo[i].valore==0)
  96.              {
  97.                 printf("la carta è gia stata scelta/n");
  98.                 continue;
  99.              }
  100.              else
  101.              {
  102.                 printf("La carta scelta è %d, %s/n",mazzo[i].valore,mazzo[i].seme);
  103.              }
  104.              printf("%s scegli la posizione seconda carta/n",giocatoredue);
  105.              scanf("%d",&j);
  106.              if(mazzo[j].valore==0)
  107.              {
  108.                 printf("la carta è gia stata scelta/n");
  109.                 continue;
  110.              }
  111.              else
  112.              {
  113.                 printf("La carta scelta è %d, %s/n",mazzo[j].valore,mazzo[j].seme);
  114.              }
  115.              if(mazzo[i].valore==mazzo[j].valore)
  116.              {
  117.                 printf("Giusto le due carte sono uguali! ricevi un punto/n");
  118.                 if(iniz==0)
  119.                 {
  120.                    puntiprimogiocatore++;
  121.                 }
  122.                 else
  123.                 {
  124.                    puntisecondogiocatore++;
  125.                    mazzo[i].valore=0;
  126.                    mazzo[j].valore=0;
  127.                 }
  128.              }
  129.              else
  130.              {
  131.                 printf("Le due carte non sono uguali! Il tuo turno è finito.");
  132.              }
  133.              if(iniz==0)
  134.              {
  135.                 iniz=1;
  136.              }
  137.              else
  138.              {
  139.                 iniz=0;
  140.              }
  141.           }
  142.           puntitotali=puntiprimogiocatore+puntisecondogiocatore;
  143.        }while(puntitotali<20);
  144.  
  145.        system("PAUSE");  
  146.        return 0;
  147.     }
  148.     void mischia_carte(Carta mazzo[],int n_carte,int qvmix)
  149.     {
  150.          int i,j,k;
  151.          for(k=1;k<=qvmix*n_carte;k++)
  152.          {
  153.                                       i=rand()%n_carte;
  154.                                       j=rand()%n_carte;
  155.                                       scambiare_carte(mazzo,i,j);
  156.                                       }
  157.                                       }
  158.                                      
  159.                                      
  160.                                      
  161.                                      
  162.                                      
  163.     void scambiare_carte(Carta mazzo[],int i,int j)
  164.     {
  165.          
  166.         Carta temp;
  167.          temp=mazzo[i];
  168.          mazzo[i]=mazzo[j];
  169.          mazzo[j]=temp;
  170.          }


Ultima modifica effettuata da alex91ander il 08/02/2011 alle 12:13
PM Quote