Sudoko en C
Fermé
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
-
5 janv. 2009 à 23:27
zouhair-7 Messages postés 7 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2009 - 6 janv. 2009 à 01:04
zouhair-7 Messages postés 7 Date d'inscription lundi 5 janvier 2009 Statut Membre Dernière intervention 6 janvier 2009 - 6 janv. 2009 à 01:04
4 réponses
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
402
5 janv. 2009 à 23:29
5 janv. 2009 à 23:29
Hello
Je suppose que c'est pour un travail d'école non ?
Je suppose que c'est pour un travail d'école non ?
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 00:08
6 janv. 2009 à 00:08
wééé j'essaie mais il est tré long
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
402
6 janv. 2009 à 00:11
6 janv. 2009 à 00:11
Bin montre déjà ce que tu as. Comme ça je pourrai t'aider.
Mais j'vais pas me taper tout le boulot. J'veux bien corriger c'est tout.
Mais j'vais pas me taper tout le boulot. J'veux bien corriger c'est tout.
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 00:14
6 janv. 2009 à 00:14
voila c ke rreussi a faire mais jai des ereures
#include<stdio.h>
#include<conio.h>
void tab()
{
int i;
char c;
clrscr();
for(i=10;i<45;i++)
{
gotoxy(25,i);
cprintf("%c",186);
}
for(i=26;i<69;i++)
{
gotoxy(i,9);
cprintf("%c",61);
}
for(i=10;i<45;i++)
{
gotoxy(69,i);
cprintf("%c",186);
}
for(i=26;i<69;i++)
{
gotoxy(i,45);
cprintf("%c",61);
}
for(i=10;i<45;i++)
{
gotoxy(30,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(35,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(40,i);
cprintf("%c",186);
}
for(i=10;i<45;i++)
{
gotoxy(45,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(50,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(55,i);
cprintf("%c",186);
}
for(i=10;i<45;i++)
{
gotoxy(60,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(65,i);
cprintf("%c",179);
}
for(i=26;i<69;i++)
{
gotoxy(i,13);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,17);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,21);
cprintf("%c",205);
}
for(i=26;i<69;i++)
{
gotoxy(i,25);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,29);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,33);
cprintf("%c",205);
}
for(i=26;i<69;i++)
{
gotoxy(i,37);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,41);
cprintf("%c",196);
}}
/*****************************************cur****************************/
void cur(int t[9][9])
{int k=0,m=0,i=28,j=11,c;
for(k=0;k<9;k++)
for(m=0;m<9;m++)
t[k][m]='0';
k=0;m=0;
do{
gotoxy(i,j);
fflush(stdin);
c=getch();
if(c==80)
{if(j>42)
{j=7; m=0;}
j+=4;m++;
gotoxy(i,j);}
if(c==72)
{if(j<=11)
{j=47;m=8;}
j-=4; m--;
gotoxy(i,j);}
if(c==77)
{if(i==68)
{i-=45;k=0;}
i+=5; k++;
gotoxy(i,j);}
if(c==75)
{if(i==28)
{i+=45;k=8;}
i-=5; k--;
gotoxy(i,j);}
if(c==49 || c==50 || c==51 || c==52 || c==53 || c==54 || c==55 || c==56 || c==57)
{
t[m][k]=c;
cprintf("%c",c);
}
}while(c!=13);
}
void main()
{
int i,j;
int t[9][9];
clrscr();
tab();
cur(t);
for(i=0;i<9;i++)
for(j=0;j<9;j++)
printf("t[%d][%d]=%c ",i,j,t[i][j]);
getch();
}
////////////////////////////////*sodoko*////////////////////////////////////
void sodoko(int t[9][9],int i,int j,int f[],int r)
{
int w,v=0,a,y[9][9],q,s,e=1,b;
if(i!=8 && j!=8)
{ if(t[i][j]==0)
{ a=trait(t,i,j,f,r,v);
if(a==1)
{ if(j==8)
{ int(f);
return sodoko(t,i+1,j=0,f[],r);
}
return sodoko(t,i,j+1,f,r+1);
}
b=return back(t,i,j,f,r,e,v);
if(b==1)
return sodoko(t,i,j,f,r);
printf("pas de solution");
}
w=t[i][j];
posi(y,q,s,i,j,w);
return sodoko(t,i,j+1,f,r);
}
printf("");
}
/*******************************traitement******************************/
int trait(int t[9][9],int i,int j,int f[],int r,int v)
{ int a,b,c,h;
while((r+v)<=9)
{ h=f[r+v];
a=sod1(t,i,j,h);
b=sod2(t,i,j,h);
c=sod3(t,i,j,h);
if((a+b+c)==3)
{ t[i][j]=f[r+v];
if(v=!0)
{ prmut+(f,r,v);
r++;return 1;break;
}
}
else
return trait(t,i,j,f,r,v+1)
}
return 0;
}
/********************************back_triking****************************************/
int back(int t[][],int i,int j,int f,int r,int e,int v)
{ int a,h,d,x,l;
if(i!=0 && j!=0)
{
while(j-e<0)
{ a=rech_possi(t,i,j-e);
if(a)
{
h=f[r]; j-=e;
a=sod1(t,i,j,h);
b=sod2(t,i,j,h);
c=sod3(t,i,j,h);
if((a+b+c)==3)
{ d=t[i][j];
t[i][j]=f[r];
prmut-(f,r,d);
j+=e;
e++;
l=trait(t,i,j,f,r,v);
if(l==1)
return 1;
}
return back(t,i,j,f,r,e+1);
}
return back(t,i,j,f,r,e+1);
}
x=j;j=(9-(e-j));
a=rech_possi(t,i-1,j);
if(a)
{
h=f[r];
a=sod1(t,i-1,j,h);
b=sod2(t,i-1,j,h);
c=sod3(t,i-1,j,h);
if((a+b+c)==3)
{ d=t[i][j];
t[i][j]=f[r];
prmut-(f,r,d);
j=x;
e++;
return 1;
}
return 0;
}
#include<stdio.h>
#include<conio.h>
void tab()
{
int i;
char c;
clrscr();
for(i=10;i<45;i++)
{
gotoxy(25,i);
cprintf("%c",186);
}
for(i=26;i<69;i++)
{
gotoxy(i,9);
cprintf("%c",61);
}
for(i=10;i<45;i++)
{
gotoxy(69,i);
cprintf("%c",186);
}
for(i=26;i<69;i++)
{
gotoxy(i,45);
cprintf("%c",61);
}
for(i=10;i<45;i++)
{
gotoxy(30,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(35,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(40,i);
cprintf("%c",186);
}
for(i=10;i<45;i++)
{
gotoxy(45,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(50,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(55,i);
cprintf("%c",186);
}
for(i=10;i<45;i++)
{
gotoxy(60,i);
cprintf("%c",179);
}
for(i=10;i<45;i++)
{
gotoxy(65,i);
cprintf("%c",179);
}
for(i=26;i<69;i++)
{
gotoxy(i,13);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,17);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,21);
cprintf("%c",205);
}
for(i=26;i<69;i++)
{
gotoxy(i,25);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,29);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,33);
cprintf("%c",205);
}
for(i=26;i<69;i++)
{
gotoxy(i,37);
cprintf("%c",196);
}
for(i=26;i<69;i++)
{
gotoxy(i,41);
cprintf("%c",196);
}}
/*****************************************cur****************************/
void cur(int t[9][9])
{int k=0,m=0,i=28,j=11,c;
for(k=0;k<9;k++)
for(m=0;m<9;m++)
t[k][m]='0';
k=0;m=0;
do{
gotoxy(i,j);
fflush(stdin);
c=getch();
if(c==80)
{if(j>42)
{j=7; m=0;}
j+=4;m++;
gotoxy(i,j);}
if(c==72)
{if(j<=11)
{j=47;m=8;}
j-=4; m--;
gotoxy(i,j);}
if(c==77)
{if(i==68)
{i-=45;k=0;}
i+=5; k++;
gotoxy(i,j);}
if(c==75)
{if(i==28)
{i+=45;k=8;}
i-=5; k--;
gotoxy(i,j);}
if(c==49 || c==50 || c==51 || c==52 || c==53 || c==54 || c==55 || c==56 || c==57)
{
t[m][k]=c;
cprintf("%c",c);
}
}while(c!=13);
}
void main()
{
int i,j;
int t[9][9];
clrscr();
tab();
cur(t);
for(i=0;i<9;i++)
for(j=0;j<9;j++)
printf("t[%d][%d]=%c ",i,j,t[i][j]);
getch();
}
////////////////////////////////*sodoko*////////////////////////////////////
void sodoko(int t[9][9],int i,int j,int f[],int r)
{
int w,v=0,a,y[9][9],q,s,e=1,b;
if(i!=8 && j!=8)
{ if(t[i][j]==0)
{ a=trait(t,i,j,f,r,v);
if(a==1)
{ if(j==8)
{ int(f);
return sodoko(t,i+1,j=0,f[],r);
}
return sodoko(t,i,j+1,f,r+1);
}
b=return back(t,i,j,f,r,e,v);
if(b==1)
return sodoko(t,i,j,f,r);
printf("pas de solution");
}
w=t[i][j];
posi(y,q,s,i,j,w);
return sodoko(t,i,j+1,f,r);
}
printf("");
}
/*******************************traitement******************************/
int trait(int t[9][9],int i,int j,int f[],int r,int v)
{ int a,b,c,h;
while((r+v)<=9)
{ h=f[r+v];
a=sod1(t,i,j,h);
b=sod2(t,i,j,h);
c=sod3(t,i,j,h);
if((a+b+c)==3)
{ t[i][j]=f[r+v];
if(v=!0)
{ prmut+(f,r,v);
r++;return 1;break;
}
}
else
return trait(t,i,j,f,r,v+1)
}
return 0;
}
/********************************back_triking****************************************/
int back(int t[][],int i,int j,int f,int r,int e,int v)
{ int a,h,d,x,l;
if(i!=0 && j!=0)
{
while(j-e<0)
{ a=rech_possi(t,i,j-e);
if(a)
{
h=f[r]; j-=e;
a=sod1(t,i,j,h);
b=sod2(t,i,j,h);
c=sod3(t,i,j,h);
if((a+b+c)==3)
{ d=t[i][j];
t[i][j]=f[r];
prmut-(f,r,d);
j+=e;
e++;
l=trait(t,i,j,f,r,v);
if(l==1)
return 1;
}
return back(t,i,j,f,r,e+1);
}
return back(t,i,j,f,r,e+1);
}
x=j;j=(9-(e-j));
a=rech_possi(t,i-1,j);
if(a)
{
h=f[r];
a=sod1(t,i-1,j,h);
b=sod2(t,i-1,j,h);
c=sod3(t,i-1,j,h);
if((a+b+c)==3)
{ d=t[i][j];
t[i][j]=f[r];
prmut-(f,r,d);
j=x;
e++;
return 1;
}
return 0;
}
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
402
6 janv. 2009 à 00:22
6 janv. 2009 à 00:22
Ah oki.
Bon commençons par le début. Déjà je comprend pas pourquoi tu écris 300000 boucles les mêmes.
Tu as plein de boucles for(i=10;i<45;i++) et plein de boucles for(i=26;i<69;i++) .
Pourquoi tu n'en fais pas uniquement UNE de chaque et tout mettre dedans ?
Bon commençons par le début. Déjà je comprend pas pourquoi tu écris 300000 boucles les mêmes.
Tu as plein de boucles for(i=10;i<45;i++) et plein de boucles for(i=26;i<69;i++) .
Pourquoi tu n'en fais pas uniquement UNE de chaque et tout mettre dedans ?
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 00:25
6 janv. 2009 à 00:25
ok apré ????????
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
402
>
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 00:34
6 janv. 2009 à 00:34
Bin je sais pas trop
Dis moi où tu bug. Dans l'interface ou l'algo ?
J'vais pas regarder TOUT le code pq il est pas super clair et pas commenté :-/
Dis moi où tu bug. Dans l'interface ou l'algo ?
J'vais pas regarder TOUT le code pq il est pas super clair et pas commenté :-/
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
>
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
6 janv. 2009 à 00:40
6 janv. 2009 à 00:40
jai un prob au niveau de back triking la fonction ki resolu le sudoko et osi o niveau d la grille elle est tro sombre et male fé :(
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
402
>
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 00:48
6 janv. 2009 à 00:48
Bon allez...
J'pense pas que je vais pouvoir t'aider parce que je suis moi-même au boulot pour l'instant.
Donc je te file la soluce : http://www.commentcamarche.net/forum/affich 2184752 sudoku resolu en langage c
Cela dit, si je peux me permettre, je te conseille :
1) d'utiliser plus les fonctions (c'est la base d'un langage procédural comme le C, et même des langages orientés objets)
2) de commenter ton code !!!!!!!!!!
3) d'établir une analyse avant de te lancer dans le code (je pense pas que tu l'ais fais)
Pour les prochaine fois ;o)
Tchuss
J'pense pas que je vais pouvoir t'aider parce que je suis moi-même au boulot pour l'instant.
Donc je te file la soluce : http://www.commentcamarche.net/forum/affich 2184752 sudoku resolu en langage c
Cela dit, si je peux me permettre, je te conseille :
1) d'utiliser plus les fonctions (c'est la base d'un langage procédural comme le C, et même des langages orientés objets)
2) de commenter ton code !!!!!!!!!!
3) d'établir une analyse avant de te lancer dans le code (je pense pas que tu l'ais fais)
Pour les prochaine fois ;o)
Tchuss
zouhair-7
Messages postés
7
Date d'inscription
lundi 5 janvier 2009
Statut
Membre
Dernière intervention
6 janvier 2009
>
BloodyAngel
Messages postés
1482
Date d'inscription
mardi 21 juin 2005
Statut
Contributeur
Dernière intervention
21 juin 2018
6 janv. 2009 à 01:04
6 janv. 2009 à 01:04
merci bien et je vais fair ce ke tu mas conseillé ,c gentil d ta part et bon chance pr ton travail
5 janv. 2009 à 23:39
5 janv. 2009 à 23:52
Fais ton devoir petit homme!