Posté le 18/07/2015 12:25
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 284 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 18/07/2015 12:31 | #
Le fichier est erroné, je n'arrive pas l'ouvrir.
Quelles pistes as-tu déjà exploré pour résoudre ce problème ? Quelle(s) difficulté(s) as-tu rencontrée(s) ?
Ainsi, la communauté aura davantage envie de te répondre, sans avoir l'impression de te mâcher le boulot
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 18/07/2015 12:33 | # | Fichier joint
Je mets une image du sujet
Stick hero
Citer : Posté le 18/07/2015 12:35 | #
le fichier est pas eronne, le but de l'exercice est de creer un resolver de sudoku et j'y arrive pas
Citer : Posté le 18/07/2015 12:35 | #
(si vous vous posez la question, le chapitre I parle d'un projet en groupe, et le chapitre II des koalas)
(non, ce n'est pas une plaisanterie)
Stick hero
Citer : Posté le 18/07/2015 12:41 | #
[AIDE] Qui pourrait (Avec un "T", pas un "S") me proposer (avec un "R" pas un "Z") sa solution :
Voici l'énoncé https://fr.wikipedia.org/wiki/Probl%C3%A8me_P_%3D_NP
Ajouté le 18/07/2015 à 12:43 :
Non mais sans blague, ce n'est pas parce que la communauté en présence est hautement philanthropique qu'il faut en abuser comme ça !
Pas de bonjour, pas de s'il vous plait, pas de précision sur le travail réalisé/les difficultés rencontrées...
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 18/07/2015 12:51 | #
C'est vrai qu'on n'est pas là pour répondre automatiquement...
Le but de l'exercice est de creer un resolver (résolveur) de sudoku et j'y arrive pas
Tu pourrais être plus précis? Pourquoi tu n'y arrives pas ?
T'as essayé plusieurs fois au moins au lieu d'abandonner à la première tentative ?
Stick hero
Citer : Posté le 18/07/2015 13:33 | #
Voici un lien vers un programme du même genre : http://www.planet-casio.com/Fr/forums/topic12010-1-Resolveur-de-Sudoku.html
Citer : Posté le 18/07/2015 18:24 | #
Mon main.c
int ft_parse_sudoku_table(int pos[9][9], char **argv);
int ft_print_sudoku(int pos[9][9]);
void ft_set_pos(int *pos, int *orig, int i, int check);
int ft_check_square(int pos[9][9], int x, int y, int nbr)
{
int xmin;
int xmax;
int ymin;
int ymax;
int i;
xmin = (x / 3) * 3;
xmax = xmin + 3;
ymin = (y / 3) * 3;
ymax = ymin + 3;
while (xmin < xmax)
{
i = ymin;
while (i < ymax)
{
if (i != y && xmin != x && pos[i][xmin] == nbr)
return (0);
i++;
}
xmin++;
}
return (1);
}
int ft_check_pos(int pos[9][9], int x, int y, int nbr)
{
int i;
i = 0;
while (i < 9)
{
if (i != x && pos[y][i] == nbr)
return (0);
i++;
}
i = 0;
while (i < 9)
{
if (i != y && pos[i][x] == nbr)
return (0);
i++;
}
i = ft_check_square(pos, x, y, nbr);
return (i);
}
void ft_put_last_nr(int pos[9][9], int nr, int *check)
{
if (ft_check_pos(pos, 8, 8, nr))
{
if (pos[8][8] == 0)
pos[8][8] = nr;
*check = *check + 1;
}
}
void ft_solve(int pos[9][9], int val, int orig[9][9], int *check)
{
int i;
int x;
int y;
x = val % 9;
y = val / 9;
if (pos[y][x] != 0 && (x != 8 || y != 8) && *check < 2)
ft_solve(pos, val + 1, orig, check);
i = 1;
while (i < 10 && *check < 2)
{
if (x != 8 || y != 8)
{
if (ft_check_pos(pos, x, y, i) && pos[y][x] == 0)
{
ft_set_pos(&pos[y][x], &orig[y][x], i, *check);
ft_solve(pos, val + 1, orig, check);
pos[y][x] = 0;
}
}
else
ft_put_last_nr(orig, i, check);
i++;
}
}
int main(int argc, char **argv)
{
int pos[9][9];
int orig[9][9];
int check;
int *ptr_check;
check = 0;
ptr_check = ✓
if (argc == 10)
{
ft_parse_sudoku_table(orig, &argv[1]);
if (ft_parse_sudoku_table(pos, &argv[1]))
{
ft_solve(pos, 0, orig, ptr_check);
if (check == 1)
ft_print_sudoku(orig);
else
write(1, "Erreur\n", 7);
}
else
write(1, "Erreur\n", 7);
}
return (0);
}
fonction.c
void ft_putchar(char c)
{
write(1, &c, 1);
}
int ft_parse_sudoku_table(int pos[9][9], char **argv)
{
int ix;
int iy;
iy = 0;
while (iy < 9)
{
ix = 0;
while (ix < 9)
{
if (argv[iy][ix] >= '0' && argv[iy][ix] <= '9')
pos[iy][ix] = argv[iy][ix] - '0';
else if (argv[iy][ix] == '.')
pos[iy][ix] = 0;
else
return (0);
ix++;
}
if (argv[iy][ix])
return (0);
iy++;
}
return (1);
}
void ft_print_sudoku(int pos[9][9])
{
int i;
int j;
i = 0;
while (i < 9)
{
j = 0;
while (j < 9)
{
ft_putchar(pos[i][j] + 48);
if (j != 8)
ft_putchar(' ');
j++;
}
ft_putchar('\n');
i++;
}
}
void ft_set_pos(int *pos, int *orig, int i, int check)
{
*pos = i;
if (check == 0)
*orig = i;
}
fonction.h
int ft_parse_sudoku_table(int pos[9][9], char **argv);
int ft_print_sudoku(int pos[9][9]);
void ft_set_pos(int *pos, int *orig, int i, int check);
est-ce que ya plus court que sa ou pas ?
Citer : Posté le 18/07/2015 18:26 | #
A quoi correspond le smiley dans le code ?
Citer : Posté le 18/07/2015 18:29 | #
a un 8 collé a une parenthese
Citer : Posté le 18/07/2015 21:29 | #
Non mais sans blague, ce n'est pas parce que la communauté en présence est hautement philanthropique qu'il faut en abuser comme ça !
Pas de bonjour, pas de s'il vous plait, pas de précision sur le travail réalisé/les difficultés rencontrées...
Bon, je vais être chiant parce que je suis d'accord mais le solver de base fonctionne comme suit :
→ Tester toutes les cases de la grille
→ Éliminer, pour chaque case, les chiffre présents sur la même ligne, la même colonne, et dans le même carré
→ S'il ne reste plus qu'un chiffre, le mettre dans la grille
→ Continuer à parcourir la grille jusqu'à ce que le sudoku soit résolu ou qu'on n'ait plus rien pu calculer
Je l'ai programmé en Basic il y a un bout de temps, franchement, y'a pas de quoi s'arracher les cheveux.
Par contre Corpse, c'est à toi de faire l'exercice : on peut discuter ta solution, proposer des améliorations etc., mais pas faire le travail à ta place : autant regarder une correction, tu seras tout aussi avancé et ça ira plus vite.
Citer : Posté le 18/07/2015 23:11 | #
j'ai fais mon programme j'aimerais savoir quoi changer ect
Citer : Posté le 19/07/2015 00:01 | #
Est-ce qu'il fonctionne ? On peut avoir des tests ? Si ça marche pas, à quel endroit ça buggue ? Ça compile au moins ?
Si tu veux que l'on puisse t'aider efficacement, il faut nous fournir plus que du code
Citer : Posté le 19/07/2015 09:54 | #
Et d'explications !
édit : le titre du topic n'est pas explicite
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 21/07/2015 09:46 | #
4 messages nettoyés.
Concentrez-vous sur le sujet.