Code à corriger
Fermé
149_67
Messages postés
18
Date d'inscription
dimanche 1 décembre 2013
Statut
Membre
Dernière intervention
26 septembre 2014
-
12 sept. 2014 à 12:20
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 oct. 2014 à 21:38
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 oct. 2014 à 21:38
A voir également:
- Code à corriger
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
12 sept. 2014 à 13:18
12 sept. 2014 à 13:18
Bonjour 149_67,
As-tu toi même programmé ce code ?
Si oui, peux-tu nous expliquer :
- l'algorithme que tu implémentes pour résoudre le problème qui t'es soumis
- ce que fait cette fonction par rapport à cet algorithme
- le prototype de cette fonction, en expliquant ce que contient chaque argument et à quoi il sert
et fournir une structure de données, des données et un exemple de programme appelant cette fonction et causant l'erreur que tu signales, en indiquant précisément le message d'erreur qui s'affiche, ton compilateur et ta plateforme.
Peut-être que quelqu'un, sur le forum, pourra alors te donner des indications.
Sinon, là, en l'état, ton message ressemble plus à : "j'ai un travail à faire, j'ai trouvé un code quelque part, mais (je n'arrive pas le faire marcher | il ne semble pas fonctionner | je ne le comprends pas), aidez moi à faire ce travail à ma place".
Dal
As-tu toi même programmé ce code ?
Si oui, peux-tu nous expliquer :
- l'algorithme que tu implémentes pour résoudre le problème qui t'es soumis
- ce que fait cette fonction par rapport à cet algorithme
- le prototype de cette fonction, en expliquant ce que contient chaque argument et à quoi il sert
et fournir une structure de données, des données et un exemple de programme appelant cette fonction et causant l'erreur que tu signales, en indiquant précisément le message d'erreur qui s'affiche, ton compilateur et ta plateforme.
Peut-être que quelqu'un, sur le forum, pourra alors te donner des indications.
Sinon, là, en l'état, ton message ressemble plus à : "j'ai un travail à faire, j'ai trouvé un code quelque part, mais (je n'arrive pas le faire marcher | il ne semble pas fonctionner | je ne le comprends pas), aidez moi à faire ce travail à ma place".
Dal
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 sept. 2014 à 13:25
12 sept. 2014 à 13:25
Bonjour,
J'ai lu en diagonale :
if((&px2>&px) && (&py2>&py))
Ce n'est pas & qu'il faut mettre mais *.
if(dep1==0 && (*px2<=px1<=*px) &&
Ce n'est pas bon a<b<c. Il faut tester : a<b && b < c.
Sinon plutôt que faire :
if (depth==1 && C1 && C2)
...
if (depth==2 && C1 && C2)
...
if (depth==3 && C1 && C2)
...
etc.
Ca serait plus lisible (et maintenable) de faire :
L'idée est de n'écrire qu'une fois la condition C1 et C2 plutôt que de la répéter à chaque fois.
J'ai lu en diagonale :
if((&px2>&px) && (&py2>&py))
Ce n'est pas & qu'il faut mettre mais *.
if(dep1==0 && (*px2<=px1<=*px) &&
Ce n'est pas bon a<b<c. Il faut tester : a<b && b < c.
Sinon plutôt que faire :
if (depth==1 && C1 && C2)
...
if (depth==2 && C1 && C2)
...
if (depth==3 && C1 && C2)
...
etc.
Ca serait plus lisible (et maintenable) de faire :
if (C1 && C2) { switch(depth) { case 1 : ... break; case 2 : ... break; case 3 : ... break; } }
L'idée est de n'écrire qu'une fois la condition C1 et C2 plutôt que de la répéter à chaque fois.
149_67
Messages postés
18
Date d'inscription
dimanche 1 décembre 2013
Statut
Membre
Dernière intervention
26 septembre 2014
14 sept. 2014 à 11:36
14 sept. 2014 à 11:36
Merci pour les remarques, mais ça ne servait à rien appart la lisibilité du programme :(
void deplacer_agent2(float **grille, int *px,int *py,int *px2,int *py2,bool ** cd,int dep1,int taille_grille,bool *init) { int k; bool test; if((*px2>*px) && (*py2>*py)) { k=*px; *px=*px2; *px2=k; } if(*init && *px!=-1 && *py!=-1) { cd[*px][*py]=false; *init=false; } else { if(*init && *px==-1 && *py==-1) { *px=rand() %10; *py=rand() %10; cd[*px][*py]=false; *init=false; } else { int px1=*px; int py1=*py; if(dep1==-1) { px1=*px; py1=*py; int compt=0; while(((px1<0 || px1>taille_grille-1 || py1<0 || py1>taille_grille-1) || ((dep1==-1)) ) && compt<20) { compt++; px1=*px; py1=*py; do { dep1=rand() %8; switch(dep1) { /* si dep1 == 0 */ case 0: {py1=py1-1; } break; /* si dep1 == 1 */ case 1: { py1=py1-1; px1=px1-1; } break; /* si dep1 == 2 */ case 2: {px1=px1-1;} break; /* si dep1 == 3 */ case 3: { py1=py1+1; px1=px1-1; } break; /* si dep1 == 4*/ case 4: { py1=py1+1; } break; /* si dep1 == 5 */ case 5: { py1=py1+1; px1=px1+1; } break; /* si dep1 == 6 */ case 6: {px1=px1+1;} break; /* si dep1 == 7 */ case 7: { py1=py1-1; px1=px1+1; } break; } if( (*px2<=px1) && (px1<=*px) && (*py2<=py1) && (py1<=*py) ) {test=true;} else {test=false;} } while(test); if((px1>=0) && (px1<=taille_grille-1) && (py1>=0) && (py1<=taille_grille-1)) { if(!cd[px1][py1]){px1=-1;py1=-1;} } } if((px1>=0) && (px1<=taille_grille-1) && (py1>=0) && (py1<=taille_grille-1)) { cd[px1][py1]=false; *px=px1; *py=py1; } else { *px=-1; *py=-1; } } } } }
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 sept. 2014 à 20:21
14 sept. 2014 à 20:21
Ben oui, mais justement, la lisibilité est hyper importante. C'est aussi pour ça qu'on met plus de temps à corriger ;-).
De plus, tu nous dis pas ce qui ne fonctionne pas précisément. A quel moment le programme cesse-t-il de fonctionner ?
Il nous faudrait également le type des arguments ci-dessous :
void deplacer_agent2(float **grille, int *px,int *py,int *px2,int *py2,bool ** cd,int dep1,int taille_grille,bool *init)
Car si tu as fait float grille[X][Y]; tu ne peux pas faire comme ça. D'ailleurs pourquoi un float ?
As-tu des erreurs lors de la compilation ? Des warnings ?
De plus, tu nous dis pas ce qui ne fonctionne pas précisément. A quel moment le programme cesse-t-il de fonctionner ?
Il nous faudrait également le type des arguments ci-dessous :
void deplacer_agent2(float **grille, int *px,int *py,int *px2,int *py2,bool ** cd,int dep1,int taille_grille,bool *init)
Car si tu as fait float grille[X][Y]; tu ne peux pas faire comme ça. D'ailleurs pourquoi un float ?
As-tu des erreurs lors de la compilation ? Des warnings ?
149_67
Messages postés
18
Date d'inscription
dimanche 1 décembre 2013
Statut
Membre
Dernière intervention
26 septembre 2014
26 sept. 2014 à 11:39
26 sept. 2014 à 11:39
Bonjour,
Chaque cellule dans la grille contient une valeur de probabilité, le type `'float'' vient d'ici.
Il y'as des warnings de type" unused variable", mais pas dans les lignes de la fonction concernée.
Chaque cellule dans la grille contient une valeur de probabilité, le type `'float'' vient d'ici.
Il y'as des warnings de type" unused variable", mais pas dans les lignes de la fonction concernée.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
26 sept. 2014 à 11:56
26 sept. 2014 à 11:56
Comment as-tu initialisé float **grille ?
149_67
Messages postés
18
Date d'inscription
dimanche 1 décembre 2013
Statut
Membre
Dernière intervention
26 septembre 2014
26 sept. 2014 à 12:20
26 sept. 2014 à 12:20
float **grille=new float*[tg];
(tg: c'est la taille de la grille)
avec tg=15
(tg: c'est la taille de la grille)
avec tg=15
14 sept. 2014 à 10:46
En fait j'ai une fonction qui fait une partie de ce travail donc je la modifie pour arriver à résoudre le problème écrit dans la discussion.