misterbobo
Messages postés2Date d'inscriptionjeudi 19 mars 2009StatutMembreDernière intervention10 avril 2009
-
10 avril 2009 à 18:20
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
11 avril 2009 à 00:50
Bonjour, j'ai à programmer la fonction nouvelle génération d'un jeu de la vie dont les paramètres en entrés sont imposés. Je pense être arrivé à quelque chose d'assez correct mais je ne comprend pas pourquoi il ne peut pas compiler "Grille [i][j]". J'ai été voir les tutoriels, je ne vois pas mon erreur et je ne peux pas utiliser de pointeur sur Grille (imposé par l'énoncé). Merci de m'aider.
void JeuDeLaVie(unsigned char Grille[][], unsigned short int Dim, unsigned short int NbEtats){
int i, j, k, compteur, boucle;
for (boucle=0; boucle<NbEtats; boucle++) {
for (i=0;i<Dim+1;i++){
for (j=0;j<Dim+1;j++){
if (Grille[i][j] == '*'){
compteur = 0;
for (k=i-1;i 3) || (compteur -1 < 2)) {
Grille[i][j] = ' ';
}
if (compteur -1 == 3) {
Grille[i][j] = '*';
}
}
if (Grille[i][j] == ' '){
compteur = 0;
for (k=i-1;i
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 10 avril 2009 à 19:45
Plusieurs erreurs:
> Unsigned char Grille[][]
Impossible, tu ne peux pas passer un tableau statique à double dimension, sans préciser au moins la deuxième dimension. En revanche, tu as le droit d'écrire: Unsigned char** Grille.
A noter que "Unsigned char** Grille" n'est pas tout à fait équivalent à "Unsigned char Grille[][]".
> for (i = 0; i < Dim + 1; i++)
Ca me semble étrange, mais n'ayant pas le reste du code, je ne sais pas si c'est correcte ou non.
> for (k = i - 1; i < i + 2; k++)
Ca c'est "space". Sachant que K commence à -1, alors cette condition sera toujours vraie, donc boucle infinie. i < i + 2, peut être simplifié en : 0 < 2. Surtout que i n'est jamais modifié...
Aprend à découper ton code en petites fonctions, tout faire d'une seule traite, c'est moche, inmaintenable, et conduis souvent à des erreurs. Quant au placement des accolades, je ne suis pas fan, mais ça c'est un choix tout à fait personnel.
misterbobo
Messages postés2Date d'inscriptionjeudi 19 mars 2009StatutMembreDernière intervention10 avril 2009 10 avril 2009 à 20:10
Merci de ta reponse, justement j'aimerais pouvoir utiliser **Grille mais l'énoncé donne la premiere ligne : « void JeuDeLaVie(unsigned char Grille[][], unsigned
short int Dim, unsigned short int NbEtats) ».
Merci également d'avoir regarder le reste du programme en effet il y avait des boucles infinies suite à un mauvais copier-coller (k=i-1,k
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 11 avril 2009 à 00:50
void JeuDeLaVie(unsigned char Grille[][])
{
}
int main(void)
{
return 0;
}
Compiler avec: gcc -W -Wall -ansi -pedantic test.c
est.c:1: erreur: les éléments du tableau sont de type incomplet
test.c:1: attention : unused parameter ‘Grille’
L'énoncé, doit être erroné, ce n'est juste pas possible.