Bonjours je tante de faire un programme qui rempli le sudoku du journal. Pour cela je balai chaque case verticalement, horizontalement et chaque carré 3 3. mon algorithme ne marche pas, il m'affiche des 9 de partout dès la première étape de calculs. #include <stdio.h>
int main(void){
int sud[10][10],l,c,ch,i,j,total,lc,nbr,tabc[10],cpt,c
arl,carc,total2;
for (l=1;l<=9;l++)
for (c=1;c<=9;c++)
sud[l][c]=0;
for (l=1;l<=9;l++){
for (c=1;c<=9;c++)
printf ("%2d",sud[l][c]);
printf ("\n");
}
printf ("\n");
printf("\ndonner d'habord la ligne, la colonne, puis le chiffre correspondant, finnisser par la donnée 10 10 10 \n\n");
scanf ("%d %d %d", &l,&c,&ch);
sud[l][c]=ch;
while (l!=10&&c!=10&&ch!=10){
scanf ("%d %d %d", &l,&c,&ch);
if (l!=10)sud[l][c]=ch;
}
printf ("\n");
for (l=1;l<=9;l++){
for (c=1;c<=9;c++)
printf ("%2d",sud[l][c]);
printf ("\n");
}
printf ("\n");
total=1;
total2=0;
while (total!=405){
if (total2!=total){
total2=total;
total=0;
for (l=1;l<=9;l++){
for (c=1;c<=9;c++){
cpt=0;
if (sud[l][c]==0){
for (i=1;i<=9;i++)
tabc [i]=0;
for (lc=1;lc<=9;lc++){
for (nbr=1;nbr<=9;nbr++){
if (sud[lc][c]=nbr) tabc [nbr]++;
if (sud[l][lc]=nbr) tabc [nbr]++;
}
}
if(l<=3) carl=3;
else if (l<=6) carl=6;
else carl=9;
if(c<=3) carc=3;
else if (c<=6) carc=6;
else carc=9;
for (i=carl-2;i<=carl;i++){
for (j=carc-2;j<=carc;j++){
for (nbr=1;nbr<=9;nbr++)
if (sud[i][j]=nbr)
tabc [nbr]++;}}
for (nbr=1;nbr<=9;nbr++)
if (tabc[nbr]==0) cpt++;
if (cpt==1){
for (nbr=1;nbr<=9;nbr++)
if (tabc[nbr]==0)
sud[l][c]=nbr;}
for (j=1;j<=9;j++){
for (i=1;i<=9;i++)
printf ("%2d",sud[l][c]);
printf ("\n");
}
printf ("\n");
}
}
}
for (l=1;l<=9;l++)
for (c=1;c<=9;c++)
total= total+sud[l][c];
}
else {printf ("votre grille n'est pas résolvable");
total=405;
}
}
for (l=1;l<=9;l++){
for (c=1;c<=9;c++)
printf ("%2d",sud[l][c]);
printf ("\n");
}
return 0;
}