Traduction

Fermé
cressssss - 27 mai 2016 à 01:32
 cressssss - 27 mai 2016 à 11:33
Bonjour,
j'ai besoin d'aide svp! je voudrai traduire un programme en langage algorithme afin de le retranscrire dans un autre langage. ce dernier etant ecrit en c et je debute à peine avec
donc voici le programme:


#include <stdio.h>
#define NB_LIG 3
#define NB_COL 3

typedef enum {VIDE, ROND, CROIX} ValeurGrille;
typedef enum {FALSE, TRUE} Boolean;
static ValeurGrille grille[NB_LIG][NB_COL];

static int prochainJoueur = ROND;

void initialiseGrille() {
int i, j;
for (i=0; i<NB_LIG; i++) {
for (j=0; j<NB_COL; j++) {
grille[i][j] = VIDE;
}
}
}

void afficheGrille() {
int i, j;
for (i=0; i<NB_LIG; i++) {
for (j=0; j<NB_COL; j++) {
switch (grille[i][j]) {
case VIDE:
printf("_ ");
break;
case ROND:
printf("O ");
break;
case CROIX:
printf("X ");
break;
}
}
printf("\n");
}
}

void metUnPionSurLaGrille() {
int ligne, col;
Boolean saisieCorrecte = FALSE;

printf("Numeros de ligne et de colonne: ");

do {
scanf("%d %d", &ligne, &col);
printf("\n");

if ((ligne > 0) && (ligne <= NB_LIG) && (col > 0) && (col <= NB_COL)) {
ligne--;
col--;
if (grille[ligne][col] != VIDE)
printf("Cette case a deja ete remplie. Veuillez recommencer: \n");
else {
saisieCorrecte = TRUE;
grille[ligne][col] = (ValeurGrille)prochainJoueur;
if (prochainJoueur == ROND)
prochainJoueur = CROIX;
else
prochainJoueur = ROND;
}
} else
printf("Indice de ligne ou de colonne incorrect. Veuillez recommencer:\n");
} while (!saisieCorrecte);
}

Boolean testeFinJeu() {
int i,j;
int joueurGagnant;
Boolean estFini = FALSE;
if (grille[1][1] != VIDE) {
if (/* colonne 1 */ ((grille[0][1] == grille[1][1]) && (grille[1][1] == grille[2][1])) ||
/* ligne 1 */ ((grille[1][0] == grille[1][1]) && (grille[1][1] == grille[1][2])) ||
/* diagonale */ ((grille[0][0] == grille[1][1]) && (grille[1][1] == grille[2][2])) ||
/* autre diag */ ((grille[0][2] == grille[1][1]) && (grille[1][1] == grille[2][0]))) {
joueurGagnant = grille[1][1]; /* ie ROND ou CROIX */
estFini = TRUE;
}
}

si la case 0,0 est vide, cela signifie que la ligne 0 et le colonne 0 ne sont pas gagnantes */
if ((!estFini) && (grille[0][0] != VIDE)) {
if ( /* ligne 0 */ ((grille[0][0] == grille[0][1]) && (grille[0][1] == grille[0][2])) ||
/* colonne 0*/ ((grille[0][0] == grille[1][0]) && (grille[1][0] == grille[2][0]))) {
joueurGagnant = grille[0][0];
estFini = TRUE;
}
}

if ((!estFini) && (grille[2][2] != VIDE)) {
if ( /* ligne 2 */ ((grille[2][0] == grille[2][1]) && (grille[2][1] == grille[2][2])) ||
/* colonne 2 */ ((grille[0][2] == grille[1][2]) && (grille[1][2] == grille[2][2]))) {
joueurGagnant = grille[2][2];
estFini = TRUE;
}
}

if (estFini) {
printf("Felicitations au joueur ayant les ");
if (joueurGagnant == ROND)
printf("ronds ");
else
printf("croix ");
printf("qui a gagne.\n");
return TRUE;
}

for (i=0; i<NB_LIG; i++) {
for (j=0; j<NB_COL; j++) {
if (grille[i][j] == VIDE)
return FALSE;
}
}
return TRUE;

}

int main() {
initialiseGrille();
do {
metUnPionSurLaGrille();
afficheGrille();
}while(!testeFinJeu());
return 1;
}




1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
27 mai 2016 à 11:03
Bonjour,

Il n'y a rien de bien compliqué dans ce code.
En lisant le code, vous devriez pouvoir écrire l'algorithme par vous même (en plus, il y a des commentaires).

Toutefois, s'il y a une ligne que vous ne comprenez pas, n'hésitez pas à demander.
0
bonjour! je sais que c'est facile mais ça l'aurait été pour moi si c'etait coder dans un langage que je maitrise mais helas je ne maitrise pas trop le c d'ou ma preocupation
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
Modifié par fiddy le 27/05/2016 à 11:23
C'est pour ça que je te propose notre aide sur certaines lignes qui te pose problème.

Je commence par le main() :
int main() {
initialiseGrille(); => appel de la fonction initialiseGrille()
do { => Faire
metUnPionSurLaGrille(); => appel de la fonction metUnPionSurLaGrille()
afficheGrille(); => appel de la fonction afficheGrille()
}while(!testeFinJeu()); => TantQue la fin du jeu n'est pas atteinte
return 1; => Renvoie 1
}

Sincèrement, sur ce code, combien de lignes ne sont pas claires ? C'est du classique par rapport à d'autres langages de programmation.
0
cressssss > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
27 mai 2016 à 11:33
d'accord je vais essayer et vous racontactez plus tard!
est-il possible que je puisse avoir votre adresse mail ou bien faites moi un mail à cette adresse: ***@***
0