Problème de fonction de tirage aléatoire en poker

moonlight2509 Messages postés 1 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 15 juin 2009 - 15 juin 2009 à 22:05
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 16 juin 2009 à 01:04
Salut, étant en débutant en langage c mon problème paraît peut-être très bête!!
Voilà j'ai un problème d'argument ou de type de fonction dans la fonction tirage aléatoire voici le code:(je ne veux pas la solution je veux qu'on m'aide à comprendre )
mercijavascript:Insert_Emoticon('/imgs2/smile.gif');

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

void Cart(char cart[2],int num);
void tirage(char cartesjouees[alea-1]);
void Hand(char main[5][2],int tabnum[5]);

int main()
{
char c,rep;
int i,num[5];
char ca[2];
char main[5][2];
char main2[5][2];

srand(time(NULL));

for(i=0;i<5;i++)
{
num[i]=tirage();
}
Hand(main,num);
printf("(");
for(i=0;i<5;i++)
printf("%c%c ",main[i][0],main[i][1]);
printf(")\n");

for(i=0;i<5;i++)
{
num[i]=tirage();
}
Hand(main2,num);
printf("(");
for(i=0;i<5;i++)
printf("%c%c ",main2[i][0],main2[i][1]);
printf(")\n");



return 0;
}

void Cart(char carte[2],int num)
{
char cart[13]={'A','2','3','4','5','6','7','8','9','X','V','D','R'};
char coul[4]={3,4,5,6};
int m,n;
num=num-1;
m=num%13;
n=num/13;
carte[0]=cart[m];
carte[1]=coul[n];
}

void tirage(char cartesjouees[alea-1])
{
int alea;
char cartesjouees[alea-1];
do
{
alea = 1 + (int) rand()*(52-1)/RAND_MAX;

}
while (cartesjouees[alea-1]==1);
cartesjouees[alea-1]=1;


return alea;
}

void Hand(char main[5][2],int tabnum[5])
{
int i,j;
char ca[2];
for(i=0;i<5;i++)
{
Cart(ca,tabnum[i]);
for(j=0;j<2;j++)
{
main[i][j]=ca[j];
}
}
}
</string.h></stdlib.h></time.h></stdio.h>

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
16 juin 2009 à 01:04
J'ai réindenté le code, mais il y a trop de chose à corriger. On sent que tes lacunes sont vraiments profondes. Il y a des choses qui n'ont aucun de sens, voici les points que tu ne sembles pas maîtriser:
- Appel de fonction
- Masquage d'argument
- Tableau
- Oublie de ; là où il ne faut pas
- Appelé des variables "main" est extrêmement inélégant, bien que valide. (Génère tout de même un warning).

Ce que je te propose, c'est de faire les choses suivantes, afin que l'on puisse t'aider:
- Qu'est-ce que tu cherches à réaliser ?
- Décrit ce que tu cherches à faire dans:
 * Hand
 * Tirage
 * Cart
 * Main

A partir des réponses à ces questions, on va essayer de construire pas à pas, cette application, en réexpliquant certaines notions si nécessaire.

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

void Cart(char cart[2],int num);
void tirage(char cartesjouees[alea-1]);
void Hand(char main[5][2],int tabnum[5]);

int main()
{
  char c,rep;
  int i,num[5];
  char ca[2];
  char main[5][2];
  char main2[5][2];

  srand(time(NULL));
  for (i=0;i<5;i++)
  {
    num[i]=tirage();
  }
  Hand(main,num);
  printf("(");
  for (i=0;i<5;i++)
    printf("%c%c ",main[i][0],main[i][1]);
  printf(")\n");

  for(i=0;i<5;i++)
  {
    num[i]=tirage();
  }

  Hand(main2,num);
  printf("(");

  for(i=0;i<5;i++)
    printf("%c%c ",main2[i][0],main2[i][1]);
  printf(")\n");
  return 0;
}

void Cart(char carte[2],int num)
{
  char cart[13]={'A','2','3','4','5','6','7','8','9','X','V','D','R'};
  char coul[4]={3,4,5,6};
  int m,n; num=num-1;
  m=num%13;
  n=num/13;
  carte[0]=cart[m];
  carte[1]=coul[n];
}

void tirage(char cartesjouees[alea-1])
{
  int alea;
  char cartesjouees[alea-1];
  do
  {
    alea = 1 + (int) rand()*(52-1)/RAND_MAX;
  }
  while (cartesjouees[alea-1]==1);
  cartesjouees[alea-1]=1;
  return alea;
}

void Hand(char main[5][2],int tabnum[5])
{
  int i,j;
  char ca[2];
  for(i=0;i<5;i++)
  {
    Cart(ca,tabnum[i]);
    for(j=0;j<2;j++)
    {
      main[i][j]=ca[j];
    }
  }
}
0
Rejoignez-nous