Bonjour je développe en C un petit hexadoku (projet) cependant j'ai un soucis dans un système d'aide une erreur mystérieuse
void Aide(TGrille3D grille3D,
const int GTaille,
const int RTaille,
const char *symboles, const int nbsymboles,const int lignes, const int colonnes,int *Scores)
{
int choixAide = 0;
int ligne=0;
puts("0-Retour");
puts("1-Affiche la grille de possibilite");
puts("2-Affiche une ligne ou une colonne");
puts("3-Grille de possibilite pour un symbole");
puts("4-Afficher une case de la grille des possibilite");
puts("5-Afficher les coordonees de la case avec le moins de possibilite");
puts("6-Roulette(aide aleatoire)");
choixAide = saisieDeuxConditions(0,6);
switch(choixAide)
{
case 1:
afficheGrillePossibilites(grille3D,GTaille,RTaille,symboles,nbsymboles);//affiche la grille de possibilit
Calcul(&Score,-3);
break;
case 2:
puts("1-Lignes");
puts("2-Colonnes");
ligne = saisieDeuxConditions(1,2);
if(ligne==1)
{
ChercheLigne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
else if(ligne==2)
{
ChercheColonne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
Calcul(&Score,-2);
break;
case 3:
AffichagePossibiliteSymboles(grille3D,lignes,colonnes,GTaille);
Calcul(&Score,-1);
break;
case 4:
AfficherCase(grille3D,GTaille,RTaille,symboles,nbsymboles);
Calcul(&Score,-2);
break;
case 5:
AfficheCoordonnes(grille3D,GTaille);
Calcul(&Score,-2);
break;
case 6:
Calcul(&Score,-2);
TirageAide(grille3D,GTaille,RTaille,symboles,nbsymboles,lignes,lignes);
break;
}
}
et le code d'erreur
error expected '=', ',', ';', 'asm' or '__attribute__ before '{' token
Scores est un pointeur. Lignes 20, 36 et autres: dois-tu vraiment passer l'adresse d'un pointeur à ta fonction Calcul() (dont le nom n'est pas vraiment explicite) ?
Autre chose: je trouve que la fonction Aide() reçoit beaucoup de paramètres. Ne pourrais-pu pas les regrouper dans des structures ? Par exemple, les 3 premiers concernent ta grille, tu pourrais avoir
struct grille_3D {
Tgrille3D grille3D;
int Gtaille;
int Rtaille;
};
Ça ne fait plus qu'un seul paramètre à passer.
Et de la même manière, tu pourrais avoir
struct symboles {
int nsymboles;
char *symboles; // ou char symboles[....] suivant le cas
};
// et
struct coordonnees {
int ligne;
int colonne;
};
- Edité par edgarjacobs 12 mai 2019 à 14:45:14
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Scores est un pointeur. Lignes 20, 36 et autres: dois-tu vraiment passer l'adresse d'un pointeur à ta fonction Calcul() (dont le nom n'est pas vraiment explicite) ?
Autre chose: je trouve que la fonction Aide() reçoit beaucoup de paramètres. Ne pourrais-pu pas les regrouper dans des structures ? Par exemple, les 3 premiers concernent ta grille, tu pourrais avoir
struct grille_3D {
Tgrille3D grille3D;
int Gtaille;
int Rtaille;
};
Ça ne fait plus qu'un seul paramètre à passer.
Et de la même manière, tu pourrais avoir
struct symboles {
int nsymboles;
char *symboles; // ou char symboles[....] suivant le cas
};
// et
struct coordonnees {
int ligne;
int colonne;
};
- Edité par edgarjacobs il y a environ 1 heure
Sans mentir je n'es pas créer ces variables , elles ont étais créer par mon professeur ^^' , il est vrai que je n'y es pas penser la ligne concernée, l'erreur est noté sur la lignes 5 .. je ne comprend pas vraiment pourquoi , pour la partie concernant le pointeur je n'es pas compris , excuse moi
Si l'erreur est indiquée ligne 5 c'est que : - ce n'est pas la première erreur, et il faut corriger les erreurs précédente pour la faire disparaître. - ou bien c'est la première erreur et là aussi il faut regarder le code qui est avant cette définition de fonction (en incluant tous les éventuels #include) - ou autre possibilité Aidea été défini avant comme autre chose qu'une fonction. Il faudrait que tu nous fournisse ce qui est avant. Cela est surement dû à un ; manquant avant, mais où?
Quant au pointeur Score, il pointe sur un entier (c'est donc l'adresse d'un entier.) La fonction Calculs'attend à recevoir un pointeur sur un entier, donc on doit passer en lui premier paramètre Scoreet surtout pas &Score car &Score c'est l'adresse de l'adresse d'un entier! Est-ce plus clair?
J'ai fais divers test pour voir d'ou provenais l'erreur et j'ai remarquer quelque choses.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include "constante.h"
#include "Affichage.h"
#include "Conversion.h"
#include "ligne.h"
#include "colonne.h"
#include "parSymbole.h"
#include "SaisieDurcie.h"
#include "AfficherCase.h"
#include "CoordonneesCase.h"
void Aide(TGrille3D grille3D,
const int GTaille,
const int RTaille,
const char *symboles, const int nbsymboles,const int lignes, const int colonnes)
{
int choixAide = 0;
int ligne=0;
puts("0-Retour");
puts("1-Affiche la grille de possibilite");
puts("2-Affiche une ligne ou une colonne");
puts("3-Grille de possibilite pour un symbole");
puts("4-Afficher une case de la grille des possibilite");
puts("5-Afficher les coordonees de la case avec le moins de possibilite");
puts("6-Roulette(aide aleatoire)");
choixAide = saisieDeuxConditions(0,6);
switch(choixAide)
{
case 1:
afficheGrillePossibilites(grille3D,GTaille,RTaille,symboles,nbsymboles);//affiche la grille de possi
break;
case 2:
puts("1-Lignes");
puts("2-Colonnes");
ligne = saisieDeuxConditions(1,2);
if(ligne==1)
{
ChercheLigne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
else if(ligne==2)
{
ChercheColonne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
break;
case 3:
AffichagePossibiliteSymboles(grille3D,lignes,colonnes,GTaille);
break;
case 4:
AfficherCase(grille3D,GTaille,RTaille,symboles,nbsymboles);
break;
case 5:
AfficheCoordonnes(grille3D,GTaille);
break;
case 6:
TirageAide(grille3D,GTaille,RTaille,symboles,nbsymboles,lignes,colonnes);
break;
}
}
voilà Aide le message n'apparait que si je met l'include de TirageAide étrangement.
voilà TirageAide
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include "constante.h"
#include "Affichage.h"
#include "SaisieDurcie.h"
#include "colonne.h"
#include "parSymbole.h"
void TirageAide(TGrille3D grille3D,int GTaille,int RTaille,int symboles,int nbsymboles,int lignes,int colonnes)
{
int ligne=0;
int Tirage;
srand(time(NULL));
Tirage = (rand() % (5 - 1 + 1)) + 1;
switch(Tirage)
{
case 1:
afficheGrillePossibilites(grille3D,GTaille,RTaille,symboles,nbsymboles);//affiche la grille de possibilit
break;
case 2:
puts("1-Lignes");
puts("2-Colonnes");
ligne = saisieDeuxConditions(1,2);
if(ligne==1)
{
ChercheLigne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
else if(ligne==2)
{
ChercheColonne(grille3D,GTaille,RTaille,symboles,nbsymboles);
}
break;
case 3:
AffichagePossibiliteSymboles(grille3D,lignes,colonnes,GTaille);
break;
case 4:
AfficherCase(grille3D,GTaille,RTaille,symboles,nbsymboles);
break;
case 5:
AfficheCoordonnes(grille3D,GTaille);
break;
}
}
(son .h) même si je ne pense pas qu'il vous sera utile
Enfaite désolé.. je viens de trouver l'erreur je dois être débile.. en disant que le .h servirais a rien peu après je me suis dis regarde et compare au cas ou que tu as inverser un parametres.. et je découvre avoir .. RAPE le point virgules.. problèmes régler , Merci a tous
- Edité par FlorianDbsz 14 mai 2019 à 15:44:49
Error début et fin
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
En recherche d'emploi.