4 réponses
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;
}
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 ?
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
Fais ton devoir petit homme!