souzen
Messages postés41Date d'inscriptiondimanche 12 octobre 2008StatutMembreDernière intervention 5 janvier 2009
-
5 janv. 2009 à 19:23
souzen
Messages postés41Date d'inscriptiondimanche 12 octobre 2008StatutMembreDernière intervention 5 janvier 2009
-
5 janv. 2009 à 19:49
Bonjour,
j'ai reussi a resoudre le problemme du sudoku mais il me reste un petit probleme c'est que il faut que le resultat s'affiche dans les cases du sudoku ce qui est un peu compliqué s'i vous plait adiez moi a le faire:
#include<stdio.h>
#include<time.h>
#include <dos.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
/*********Déclaration des vriables globales********************/
int M[9][9];
int G[9][9];
/*******Déclaration des prototypes de différents fonctions*********/
void premierePage();
void dessinerGrille();
void initialisationMatrice();
void remplissageGrille();
int test(int,int,int,int [9][9]);
void affichageMatrice();
int solution(int G[9][9]);
int vide(int,int);
/*==============================================================================
======================Fonction d'affichage de la premiere page==================
==============================================================================*/
void premierePage()
{
clrscr();
textcolor(30);
gotoxy(12,3);
cprintf("*********** Ecole Marocaine des Science de l'Igenieur ********");
gotoxy(14,5);
cprintf("**** 2eme annee Informatique et Reseaux****");
sleep(3);
gotoxy(16,7);
cprintf("** Mini Projet de Programmation En C :SUDUKU **");
sleep(3);
gotoxy(17,12);
printf("\a\a\a");
cprintf("******* Bienvenue dans notre programme ********");
sleep(3);
gotoxy(22,22);
cprintf("Encadree par :\n");
cprintf("\n Professeur: <Benhsain Azzedine>");
gotoxy(22,25);
cprintf("\nRealisee par :\n");
cprintf("<EZZIANI Loubna> et <BOUHSAINA Salma>");
sleep(2);
}
/*==============================================================================
======================Fonction pour dessiner la grille du sudoko================
==============================================================================*/
void dessinerGrille()
{
int k=25,m=27,n=26,j=24;
int o=186;
int t=205;
int i;
clrscr();
textcolor(20);
cprintf("\n-Pour remplir les cases, vous pouvez utilisez les touches %c ou %c ou %c ou %c",n,m,j,k);
gotoxy(3,11);
printf(" %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",t-4,t,t,t,t-2,t,t,t,t-2,t,t,t,t-2,t-2,t,t,t,t-2,t,t,t,t-2,t,t,t,t-2,t-2,t,t,t,t-2,t,t,t,t-2,t,t,t,o+1);
for(i=0;i<9;i++)
{
if(i==3||i==6)
{
printf("\n %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",t-1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,o-1);
printf("\n %c %c %c %c%c %c %c %c%c %c %c %c",o,o,o,o,o,o,o,o,o,o,o,o);
printf("\n %c %c %c %c%c %c %c %c%c %c %c %c",o,o,o,o,o,o,o,o,o,o,o,o);
printf("\n %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",t-1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,o-1);
}
else
{
printf("\n %c %c %c %c%c %c %c %c%c %c %c %c",o,o,o,o,o,o,o,o,o,o,o,o);
printf("\n %c %c %c %c%c %c %c %c%c %c %c %c",o,o,o,o,o,o,o,o,o,o,o,o);
printf("\n %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",t-1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,t+1,t+1,t,t,t,t+1,t,t,t,t+1,t,t,t,o-1);
}
}
printf("\r %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",t-5,t,t,t,t-3,t,t,t,t-3,t,t,t,t-3,t-3,t,t,t,t-3,t,t,t,t-3,t,t,t,t-3,t-3,t,t,t,t-3,t,t,t,t-3,t,t,t,o+2);
}
/*==============================================================================
======================Fonction d'initialisation de la matrice===================
==============================================================================*/
void initialisationMatrice()
{
int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
M[i][j]=0;
}
}
}
/*==============================================================================
======================Fonction de test des valeurs saisies======================
==============================================================================*/
int test(int ligne,int colonne,int c,int M[9][9])
{ int q,p,L,C;
//tester au niveau de la colonne
for(q=0;q<9;q++)
{
if(q!=colonne)
{
if(M[ligne][q]==c)
{
return 1;
}
}
}
//tester au niveau de la ligne
for(p=0;p<9;p++)
{
if(p!=ligne)
{
if(M[p][colonne]==c)
{
return 1;
}
}
}
//tester au niveau de la région
L=(ligne/3)*3;
C=(colonne/3)*3;
for(p=L;p<L+3;p++)
{
for(q=C;q<C+3;q++)
{
if((p!=ligne)&&(q!=colonne))
{
if(M[p][q]==c)
{
return 1;
}
}
}
}
return 0;
}
/*==============================================================================
======================Fonction de remplissage de la grille======================
==============================================================================*/
void remplissageGrille()
{ int a,b,x,y;
char c;
int i,j;
a=x=15;
b=y=13;
i=j=0;
gotoxy(a,b);
c=getch();
do
{
if(c==0)
{
c=getch();
switch(c)
{
case 77:if(x==(23)||x==(36)) //fleche droite
{
x+=5;
j+=1;
}
else
{
x+=4;
j+=1;
}
gotoxy(x,y);
if(x>49)
{
gotoxy(a,y);
x=a;
j=0;
}
break;
case 75:if(x==(28)||x==(41)) //fleche gauche
{
x-=5;
j-=1;
}
else
{
j-=1;
x-=4;
}
gotoxy(x,y);
if(x<15)
{
gotoxy(49,y);
x=49;
j=8;
}
break;
case 80:if(y==(19)||y==29) //fleche bas
{
y+=4;
i+=1;
}
else
{
y+=3;
i+=1;
}
gotoxy(x,y);
if(y>39)
{
gotoxy(x,b);
y=b;
i=0;
}
break;
case 72:if(y==23 || y==33) //fleche haut
{
i-=1;
y-=4;
}
else
{
i-=1;
y-=3;
}
gotoxy(x,y);
if(y<13)
{
gotoxy(x,39);
y=39;
i=8;
}
break;
}
}
else
{
switch(c)
{
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57: if(test(i,j,c-'0',M)==0)
{
cprintf("%c",c);M[i][j]=c-'0';gotoxy(x,y);
}break;
case 8: cprintf(" ");M[i][j]=0;gotoxy(x,y);break;
}
}
c=getch();
}
while(c!=13);
}
/*==============================================================================
=====================Fonction de copier les valeur de M à G=====================
==============================================================================*/
/*==============================================================================
========================Fonction de tester les cases vide=======================
==============================================================================*/
int vide(int i,int j)
{
if(M[i][j])
{
return 1;
}
return 0;
}
/*******************************************************************************
*******************************Programme principal******************************
*******************************************************************************/
int main()
{
int i,j;
souzen
Messages postés41Date d'inscriptiondimanche 12 octobre 2008StatutMembreDernière intervention 5 janvier 200926 5 janv. 2009 à 19:49
bonjour,
voila la partie solution de la grille sudoku mais il me faut que ca soit avec la recurssivité
sil vous plait aidez moi a la rendre recurssif je lai fait itteratif:
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.