Pour ChangeCase(), il y a une erreur dont je suis responsable, l'ayant faite en transcrivant l'algo du message #57 (je corrige ce message). Comme quoi, il te faut faire une lecture critique et ne pas te fier aveuglément.
if (grille[ligne][col][0]==0 && val!=0)
Pour entre_valeur(), elle devrait recevoir grille en argument et non pas utiliser une variable locale : on a besoin de cette grille en dehors de cette fonction.
On peut regrouper l'entrée des valeurs soit sur fichier, soit sur clavier en passant aussi un FILE* et en faisant un fscanf(). Si on veut l'entrée au clavier, on appellera la fonction avec stdin en argument.
Donc :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| void entre_valeur(FILE * f, Grille grille)
{ int ligne=0, col=0; //Lecture des valeur entre par l'utilisateur
int k;
int val;
if(f==stdin)
{
printf("\n");
printf("Entrer ligne par ligne les %d chiffre de votre grille.\nMettez des 0 pour les cases vide \n\n",MAX);
}
for (ligne=0; ligne<MAX; ligne++)
for (col = 0; col < DIM; col++)
for(k=0; k<DIM+1;k++) grille[ligne][col][k] = k!=0;
for (ligne = 0; ligne < DIM; ligne++)
for (col = 0; col < DIM; col++)
{
fscanf(f,"%1d", &val);
ChangeCase(grille,ligne,col,val);
}
}
int main(void)
{
Grille grille;
entre_valeur(stdin,grille);
system("pause");
return 0;
} |
Qu'est-ce que ces MAX et ces DIM qui se mélangent ? Pourquoi sont-ils utilisés dans une des fonctions et pas dans l'autre ? Il faut être homogène dans son codage.
Partager