Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 29 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

trouve pas mes erreurs

 
n°19174
alix5
Profil : Jeune recrue
Posté le 07-02-2008 à 10:38:14  profilanswer
 


Bonjour,
 
je n'arrive pas à trouver mes erreurs dans mon code! pouvez -vous m'aider??
[ en c jeu puissance 4]
 
merci  
 
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. char *creer_grille(int,int);
  5. void afficher_grille(char *,int,int);
  6. int verifgrille(char *p4,int colonnes,int lignes,char *joueuractuel);
  7. int main (void) {
  8.  
  9.    char joueur,joueur2;
  10.    char *joueuractuel=NULL; /* Pointeur joueuractuel vers joueur */
  11.    int choix,nmbrerandom,JEU=1,CHOIXVALIDE=1;  /* nmbrerandom pour la fonction random */
  12.    int colonnes,lignes=6;
  13.    char *p4=NULL;
  14.      /* Menu du jeu */
  15.    while(CHOIXVALIDE) { /* Operateur logique boolen, tant que choixvalide != 0, on relance le menu */
  16.    printf("\nSelectionnez le type de partie souhait\n\n" );
  17.    printf("-> Humain vs Humain : 1\n" );
  18.    printf("-> Humain vs CPU : 2\n" );
  19.    printf("-> CPU vs CPU : 3\n\n" );
  20.  
  21.    printf("Votre choix : " );
  22.    scanf("%d",&choix);
  23.  
  24.  
  25.    switch(choix) {
  26.       case 1:
  27.          joueur='O',joueur2='X',CHOIXVALIDE=0;
  28.          break;
  29.       case 2:
  30.          joueur='O',joueur2='S',CHOIXVALIDE=0;
  31.          break;
  32.       case 3:
  33.          joueur='S',joueur2='T',CHOIXVALIDE=0;
  34.          break;
  35.       default:
  36.          break; } }
  37.        
  38.    /* Fin Menu du jeu */
  39.    /* Creer la grille */
  40.  
  41.     printf("\nNombre de colonnes :  " );
  42.    scanf("%d",&colonnes);
  43.  
  44.    p4=creer_grille(colonnes,lignes);
  45.    /* fin de creer la grille */
  46. /* random qui renvoie 0 ou 1 et determine le joueur qui commence */
  47.    srand(time(NULL));    /* On initialise le gnrateur de nombre alatoires */
  48.    nmbrerandom=(rand() % 2);
  49.    if(nmbrerandom==0)
  50.       joueuractuel=&joueur;
  51.    joueuractuel=&joueur2;
  52.  
  53.  
  54.    /* fin random */
  55.    /* Debut de la boucle */
  56.    while(JEU) {  /* Operateur logique JEU , tant que JEU != 0 (que personne n'a gagn) on continue le jeu */
  57.  
  58.    
  59.       afficher_grille(p4,colonnes,lignes); /* Affichage de la grille */
  60.    
  61.       int i,j;
  62.    
  63.       /* test */
  64.       *p4='O';
  65.       afficher_grille(p4,colonnes,lignes);
  66.  
  67.       /*fin test */
  68.    
  69.       int condition= verifgrille(p4,colonnes,lignes,joueuractuel); /* test si qqn a gagn */
  70.      
  71.  if(condition == 1)
  72. {
  73. printf("gagne" );
  74. }
  75. else
  76. {
  77. printf("perdu\n" );
  78. }
  79. return 0; } }
  80. /* Debut des fonctions */
  81. /* Fonction crer grille */
  82. char *creer_grille(int col,int lignes) {
  83.  
  84.    int i,j;
  85.  
  86.    char *p4=malloc(lignes*sizeof(*p4));
  87.    if(p4==NULL) exit(0);
  88.  
  89.    for(i=0;i<lignes;i++)
  90.       p4=malloc(col*sizeof(*p4));
  91.  
  92.      for(i=0;i<lignes;i++)
  93.       for(j=0;j<col;j++)
  94.          *p4=' ';
  95. return p4; }
  96. /* Fonction Afficher grille */
  97. void afficher_grille(char *p4,int colonnes,int lignes) {
  98.  
  99.    int i,j;
  100.  
  101.    for(i=0;i<lignes;i++) {
  102.       printf("\n" );
  103.       for(j=0;j<colonnes;j++)
  104.          printf("| %c ",*p4); }
  105.    printf("\n" );
  106.    for(i=0;i<colonnes;i++)
  107.       printf("%d ",i);
  108.    printf("\n\n" ); }
  109. /* Fonction Verifier Grille */
  110. int verifgrille(char *p4,int colonnes,int lignes,char *joueuractuel) {
  111.    /* verif horizontale */
  112. int compteur=0;
  113. int i,j,condition;
  114. for(i=(lignes-1);i>=0;i--) {
  115.     if(compteur==4) {
  116.        printf("Celui qui a les pions %c a gagn\n",*joueuractuel);
  117.        return 1; }
  118.     else  compteur=0;
  119.     for(j=0;j<colonnes;j++) {
  120.        if(compteur==4) {
  121.           printf("Celui qui a les pions %c a gagn\n",*joueuractuel);
  122.          return 1; }
  123.        if(*p4 != *joueuractuel) compteur=0;
  124.        else  compteur++; } }
  125. /* verif verticale */
  126. compteur=0;
  127. for(j=0;j<colonnes;j++) {
  128.     if(compteur==4) {
  129.   return 1; }
  130.     else compteur=0;
  131.     for(i=(lignes-1);i>=0;i--) {
  132.        if(compteur==4) {
  133.           printf("Vous avez gagn\n" );
  134.           return 1; }
  135.        if(*p4 != *joueuractuel) compteur=0;
  136.        else compteur++; } }
  137. return 0;
  138. }
  139. /* Fin des fonctions */

n°19175
Ryo-Ohki
namae nanka
Profil : Légende vivante
Posté le 07-02-2008 à 13:10:29  profilanswer
 

Des erreurs de compilation? Si oui poster les erreurs en question aiderait à répondre.


---------------
Hollow Cabbit of Caerbannog | Chacalapinours Légendaire | Grand Ermite en Chef  :o
In nomine Felis, et Insania, et Malikis Sancti Amen | Mon Blog Photo
n°19176
alix5
Profil : Jeune recrue
Posté le 07-02-2008 à 13:26:37  profilanswer
 

il y en a 3 les voici:
 
C:\Program Files\Microsoft Visual Studio\MyProjects\44\p4.c(74) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\44\p4.c(83) : error C2143: syntax error : missing ';' before 'type'
C:\Program Files\Microsoft Visual Studio\MyProjects\44\p4.c(85) : error C2065: 'condition' : undeclared identifier
Error executing cl.exe.

n°19178
Ryo-Ohki
namae nanka
Profil : Légende vivante
Posté le 07-02-2008 à 13:53:43  profilanswer
 

Mon C est rouillé mais déjà pour les deux premières erreurs, il s'agit de déclarations de variables au milieu du code.
 
1°/ c'est très sale.
2°/ certains compilateurs modernes refusent ce genre de syntaxe.
3°/ la troisième erreur découle de la non reconnaissance de la variable mentionée à la deuxième erreur  :whistle:  (condition)
 
Tu sais ce qu'il te reste à faire  ;)  modifie tout ça.


---------------
Hollow Cabbit of Caerbannog | Chacalapinours Légendaire | Grand Ermite en Chef  :o
In nomine Felis, et Insania, et Malikis Sancti Amen | Mon Blog Photo
n°19179
cmoila
Profil : Membre
Posté le 07-02-2008 à 19:11:49  profilanswer
 

Moi, je comprends rien du tout. Faut dire que la présentation et l'indentation est grandiose.
 
Les erreurs ne sont pas du à la déclaration de variables en plein code.  
Surtout que les var i et j de la ligne 74 ne servent à rien. Ca devrait être un warning de fin de fonction.  
D'ailleurs ce n'est pas forcément une erreur de déclarer une variable juste avant son utilisation, si c'est une variable secondaire à usage temporaire, comme un compteur de boucle ou un buffer momentané.
 
Dans un message d'erreur de syntaxe, erreur réelle a eut lieu avant la ligne indiquée. Car le compilo cherche à interpréter le code jusqu'a se qu'il soit bloqué, et là il génère l'erreur qui peut être plusieurs lignes plus loin.
 
Ton problème semble plutot être dans les accolades fermantes, qui sont placées de façon absolument illisible. On ne peut pas identifier les blocs de code.
T'as aussi des choses délirantes comme le if de la ligne 59 qui n'a aucun effet quelle que soit la situation , vu la ligne 61.
 
Le malloc des lignes 106 et 110. je vois pas comment un compilo peut passer sur ça.


Aller à :
Ajouter une réponse