Correction du morpion en c
Fermé
dr_melik
Messages postés
43
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2009
-
17 févr. 2008 à 13:09
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 févr. 2008 à 15:17
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 févr. 2008 à 15:17
A voir également:
- Correction du morpion en c
- Correction orthographe - Guide
- Telecharger clavier français avec correction - Télécharger - Divers Utilitaires
- Mode correction word - Guide
- Supprimer correction automatique android - Accueil - Mobile
- Correction yeux rouges gratuit - Télécharger - Retouche d'image
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 févr. 2008 à 13:36
17 févr. 2008 à 13:36
Salut,
Qu'est-ce qui ne va pas dans ton programme ? Erreur de compilation ? Ou erreur de fonctionnement (si oui, précise laquelle)
Cordialement
Qu'est-ce qui ne va pas dans ton programme ? Erreur de compilation ? Ou erreur de fonctionnement (si oui, précise laquelle)
Cordialement
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 févr. 2008 à 13:46
17 févr. 2008 à 13:46
Re,
En fait, j'ai vu des choses bizarres dans ton code. Tu as mis i=0, dans la boucle do while(i<3). Je pense donc que ton programme devait rester indéfiniment dans une fonction. Je te corrige la fonction, je te laisse rectifier les autres fonctions qui ont la même erreur.
De plus, ta condition pour voir si trois pièces d'une même couleur sont alignées, sont fausses. Je te laisse y réfléchir dessus, si tu trouves vraiment pas, repasse sur le forum, on t'aidera ;)
En fait, j'ai vu des choses bizarres dans ton code. Tu as mis i=0, dans la boucle do while(i<3). Je pense donc que ton programme devait rester indéfiniment dans une fonction. Je te corrige la fonction, je te laisse rectifier les autres fonctions qui ont la même erreur.
De plus, ta condition pour voir si trois pièces d'une même couleur sont alignées, sont fausses. Je te laisse y réfléchir dessus, si tu trouves vraiment pas, repasse sur le forum, on t'aidera ;)
int lignehor(tab t) { int i,j,cond=0; i=0; do { for(j=0;j<Cmax;j++) if(t[i][j]==1||t[i][j]==2) cond=1; i++; } while(i<3); return(cond); }
dr_melik
Messages postés
43
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2009
6
17 févr. 2008 à 13:56
17 févr. 2008 à 13:56
salut,mais désolé je n'ai pas compris la faute
(i=0) c'est une initialisation et tu vois qu'après je l'ai incrémenté :
for(j=0;j<Cmax;j++)
if(t[i][j]==1||t[i][j]==2)
cond=1;
i++;
et j'espère que tu me donne la correction le plus tot que possible et merci d'avance.
(i=0) c'est une initialisation et tu vois qu'après je l'ai incrémenté :
for(j=0;j<Cmax;j++)
if(t[i][j]==1||t[i][j]==2)
cond=1;
i++;
et j'espère que tu me donne la correction le plus tot que possible et merci d'avance.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 févr. 2008 à 14:01
17 févr. 2008 à 14:01
Je sais bien que c'est l'initialisation.
Mais regarde ton code de plus près.
Tu définis j=0, dans la boucle do while. Donc ton code va incrémenter j, puis mettre j à 0, puis incrémenter j, puis mettre j à 0.
Il faut donc que tu sortes j de la boucle do while. Regarde mon post précédent, je t'ai apporté la correction.
Sinon je t'ai demandé quelles étaient tes erreurs ? Compilation, erreur de fonctionnement, ...
Et je te maintiens toujours que tes fonctions pour vérifier s'il y a un gagnant sont fausses.
Et enfin, lorsque tu postes un code, utilise la touche "conservation automatique du code" à droite du bouton "souligné". Et indente ton code, car c'est illisible. Merci
Cordialement
Mais regarde ton code de plus près.
int ver(tab t) { int i,j,cond=0; do { j=0; for(i=0;i<Lmax;i++) if (t[i][j]==1||t[i][j]==2) cond=1; j++; } while(j<3); return(cond); }
Tu définis j=0, dans la boucle do while. Donc ton code va incrémenter j, puis mettre j à 0, puis incrémenter j, puis mettre j à 0.
Il faut donc que tu sortes j de la boucle do while. Regarde mon post précédent, je t'ai apporté la correction.
Sinon je t'ai demandé quelles étaient tes erreurs ? Compilation, erreur de fonctionnement, ...
Et je te maintiens toujours que tes fonctions pour vérifier s'il y a un gagnant sont fausses.
Et enfin, lorsque tu postes un code, utilise la touche "conservation automatique du code" à droite du bouton "souligné". Et indente ton code, car c'est illisible. Merci
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dr_melik
Messages postés
43
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
16 octobre 2009
6
17 févr. 2008 à 14:50
17 févr. 2008 à 14:50
merci mais j'ai un problème au niveau de cette ligne
void main()
{
int l,c,a,b,i=1;
clrscr();
Miseazero(t);
affichetableau(t);
getch();
ainsi que pour le test du gagnant.et merci d'avance.
void main()
{
int l,c,a,b,i=1;
clrscr();
Miseazero(t);
affichetableau(t);
getch();
ainsi que pour le test du gagnant.et merci d'avance.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
17 févr. 2008 à 15:17
17 févr. 2008 à 15:17
Salut,
Tu as un problème, c'est vague. Erreur de compilation ? Et mets ton message d'erreur. Si tu mets pas ça, on pourra pas trop t'aider.
Le test du gagnant, tu dois vérifier si trois cases sont alignées. Par exemple : if( t[0][0]==t[0][1] && t[0][0]==t[0][2] && t[0][0]!=0) printf("aligné");
Cordialement
Tu as un problème, c'est vague. Erreur de compilation ? Et mets ton message d'erreur. Si tu mets pas ça, on pourra pas trop t'aider.
Le test du gagnant, tu dois vérifier si trois cases sont alignées. Par exemple : if( t[0][0]==t[0][1] && t[0][0]==t[0][2] && t[0][0]!=0) printf("aligné");
Cordialement