A voir également:
- [Algo - C] algo foireux ?
- Telecharger algo pour pc - Télécharger - Édition & Programmation
- Algo prono - Télécharger - Sport
- Algo de Huffman en C - Forum C
- ALGO ET PASCAL - Forum Pascal
- Aide : algo palindrome - Forum Programmation
3 réponses
Lazarey
Messages postés
3239
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
21 mai 2012
745
5 nov. 2006 à 13:50
5 nov. 2006 à 13:50
Slt,
Je n'ai jamais fais de C, mais que du C++. Mais il me semble qu'une fonction void ne retourne rien, d'ou ton problème.
Il faut que tu passe ta grille en paramètre :
Sinon, je sais pas si ça existe aussi en C mais essaye d'utiliser un booléen. La fonction retourne vrai su c'est une grille correcte, ou faux sinon. Ca donne :
Je n'ai jamais fais de C, mais que du C++. Mais il me semble qu'une fonction void ne retourne rien, d'ou ton problème.
Il faut que tu passe ta grille en paramètre :
int test_sudoku(tableau de sudoku à vérifier)
Sinon, je sais pas si ça existe aussi en C mais essaye d'utiliser un booléen. La fonction retourne vrai su c'est une grille correcte, ou faux sinon. Ca donne :
bool test_sudoku(tableau de sudoku à vérifier)
Slt Elfarouge,
j'ai posé le probléme à un ami qui métrise trés bien le C et il a trouvé deux fautes:
1ère faute: Il faut changer val = sudoku[i][j] - 1 dans 3endroit;
2ème faute: il faut 'j=j+3' au lieu de 'j + 3' dans les boucles for, pareil pour le i
cela devrait marché puisk on l'a essayé et sa marche
j'ai posé le probléme à un ami qui métrise trés bien le C et il a trouvé deux fautes:
1ère faute: Il faut changer val = sudoku[i][j] - 1 dans 3endroit;
2ème faute: il faut 'j=j+3' au lieu de 'j + 3' dans les boucles for, pareil pour le i
cela devrait marché puisk on l'a essayé et sa marche
Ce code marche bien : de la part de sam:
#include <stdio.h>
int sudoku[9][9] = {
{9, 8, 7, 3, 6, 1, 5, 2, 4},
{1, 5, 2, 9, 4, 8, 7, 6, 3},
{6, 3, 4, 7, 2, 5, 8, 9, 1},
{8, 6, 1, 5, 9, 2, 3, 4, 7},
{7, 2, 9, 1, 3, 4, 6, 5, 8},
{3, 4, 5, 6, 8, 7, 2, 1, 9},
{2, 9, 3, 4, 7, 6, 1, 8, 5},
{4, 1, 6, 8, 5, 3, 9, 7, 2},
{5, 7, 8, 2, 1, 9, 4, 3, 6}
};
int main (){
print_sudoku();
if(test_sudoku()==1)
printf("La solution est bonne!");
else
printf("La solution n'est PAS bonne!");
}
int test_sudoku(void)
{
int i, j, k, l, m, val ;
int verif[9] ;
for (i = 0 ; i < 9 ; i++ )
{
for (k = 0 ; k < 9 ; k++)
verif[k] = 0 ;
for (j = 0 ; j < 9 ; j++)
{
val = sudoku[i][j] - 1;
if(verif[val] == 1)
return 0 ;
else
verif[val] = 1 ;
}
}
for (i = 0 ; i < 9 ; i++ )
{
for (k = 0 ; k < 9 ; k++ )
verif[k] = 0 ;
for (j = 0 ; j < 9 ; j++)
{
val = sudoku[j][i] - 1;
if(verif[val] == 1)
return 0 ;
else
verif[val] = 1 ;
}
}
for(i = 0 ; i < 9 ; i += 3)
{
for(j = 0 ; j < 9 ; j += 3)
{
for(k = 0 ; k < 9 ; k++)
verif[k] = 0 ;
for(l = 0 ; l < 3 ; l++)
{
for(m = 0 ; m < 3 ; m++)
{
val = sudoku[i+l][j+m] - 1;
if (verif[val] == 1)
return 0 ;
else if (verif[val] == 0)
verif[val] = 1 ;
}
}
}
}
return 1 ;
}
int print_sudoku(void) {
int i, j;
for (i = 0 ; i < 9 ; i++ ){
for (j = 0 ; j < 9 ; j++){
printf("%d ",sudoku[i][j]);
}
printf("\n\n");
}
return 0;
}
#include <stdio.h>
int sudoku[9][9] = {
{9, 8, 7, 3, 6, 1, 5, 2, 4},
{1, 5, 2, 9, 4, 8, 7, 6, 3},
{6, 3, 4, 7, 2, 5, 8, 9, 1},
{8, 6, 1, 5, 9, 2, 3, 4, 7},
{7, 2, 9, 1, 3, 4, 6, 5, 8},
{3, 4, 5, 6, 8, 7, 2, 1, 9},
{2, 9, 3, 4, 7, 6, 1, 8, 5},
{4, 1, 6, 8, 5, 3, 9, 7, 2},
{5, 7, 8, 2, 1, 9, 4, 3, 6}
};
int main (){
print_sudoku();
if(test_sudoku()==1)
printf("La solution est bonne!");
else
printf("La solution n'est PAS bonne!");
}
int test_sudoku(void)
{
int i, j, k, l, m, val ;
int verif[9] ;
for (i = 0 ; i < 9 ; i++ )
{
for (k = 0 ; k < 9 ; k++)
verif[k] = 0 ;
for (j = 0 ; j < 9 ; j++)
{
val = sudoku[i][j] - 1;
if(verif[val] == 1)
return 0 ;
else
verif[val] = 1 ;
}
}
for (i = 0 ; i < 9 ; i++ )
{
for (k = 0 ; k < 9 ; k++ )
verif[k] = 0 ;
for (j = 0 ; j < 9 ; j++)
{
val = sudoku[j][i] - 1;
if(verif[val] == 1)
return 0 ;
else
verif[val] = 1 ;
}
}
for(i = 0 ; i < 9 ; i += 3)
{
for(j = 0 ; j < 9 ; j += 3)
{
for(k = 0 ; k < 9 ; k++)
verif[k] = 0 ;
for(l = 0 ; l < 3 ; l++)
{
for(m = 0 ; m < 3 ; m++)
{
val = sudoku[i+l][j+m] - 1;
if (verif[val] == 1)
return 0 ;
else if (verif[val] == 0)
verif[val] = 1 ;
}
}
}
}
return 1 ;
}
int print_sudoku(void) {
int i, j;
for (i = 0 ; i < 9 ; i++ ){
for (j = 0 ; j < 9 ; j++){
printf("%d ",sudoku[i][j]);
}
printf("\n\n");
}
return 0;
}