[C++] Sudoku
coubou
-
dandypunk Messages postés 832 Date d'inscription Statut Membre Dernière intervention -
dandypunk Messages postés 832 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
probleme avec mon programme en c++
je doi cree un tableau en 3D puis saisir les cases et ensuite
avec une fonction booleenne je dois verifier que dans chaque ligne n'a y a pas de doublons
le numero de la ligne à passer sera passer en parametre
probleme avec mon programme en c++
je doi cree un tableau en 3D puis saisir les cases et ensuite
avec une fonction booleenne je dois verifier que dans chaque ligne n'a y a pas de doublons
le numero de la ligne à passer sera passer en parametre
A voir également:
- [C++] Sudoku
- Sudoku gratuit - Télécharger - Jeux vidéo
- Sudoku apk - Télécharger - Puzzle & Réflexion
- Sudoku Susser - Télécharger - Outils professionnels
20 réponses
En GROS c'est cela.
Mis à part que la fonction booléenne doit arriver avant l'affichage.
PS : A priori mon code fonctionait
Mis à part que la fonction booléenne doit arriver avant l'affichage.
PS : A priori mon code fonctionait
Bonjour,
Et donc ou est le problème?
Au fait c'est d'un tableau en 2 D dont tu as besoin pour un sudoku.
Et donc ou est le problème?
Au fait c'est d'un tableau en 2 D dont tu as besoin pour un sudoku.
je suis bloker je ne sai pa commen faire pour faire une fonction booleenne avec un parametre de saisie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu veux dire que tu veux saisir des nombres pour les mettre dans un tableau 2D et ensuite écrire une fonction booléenne qui vérifie les doublons dans les lignes?
Pour saisir un nombre tu peux utiliser la fonction scanf.
Pour ce qui est d'écrire une fonction booléenne, tu peux faire une fonction qui retourne un entier (0 pour faux et 1 pour vrai).
Pour saisir un nombre tu peux utiliser la fonction scanf.
Pour ce qui est d'écrire une fonction booléenne, tu peux faire une fonction qui retourne un entier (0 pour faux et 1 pour vrai).
pa bien compris pour la fonction
comment dois je faire alors pour le numero de ligne qui devra etre passé en parametre
comment dois je faire alors pour le numero de ligne qui devra etre passé en parametre
Mettons que tu aies ton sudoku défini comme ça:
La première ligne sera sud[0][i] sachant que i représente n'importe quel nombre de 0 à 8 (On part de zero donc on s'arrête à huit) et i c'est la colonne bien sûr.
Je te donne un exemple: "écrire une fonction qui permet de vérifier que la case de ligne 4 et colonne 9 possède la valeur 1":
int sud[9][9];
La première ligne sera sud[0][i] sachant que i représente n'importe quel nombre de 0 à 8 (On part de zero donc on s'arrête à huit) et i c'est la colonne bien sûr.
Je te donne un exemple: "écrire une fonction qui permet de vérifier que la case de ligne 4 et colonne 9 possède la valeur 1":
int verif(int sudoku[9][9]) { if(sudoku[3][8] == 1){ return 1; } else{ return 0; } }
donc d'apres toi ma consigne dit que je doit mettre mon tableau en parametre ??
int verif(int sudoku[9][9])
{
for(i=0;i<ligne;i++)
{ for(j=0;j<colonne;j++)
la fo je trouve la soluce pour chch les doublons !!
if(sudoku[3][8] == 1){
return 1;
}
else{
return 0;
}
}
}
puis la je ne sait pa comment faire pour apperler ma fonction et retrouver le retour??
int verif(int sudoku[9][9])
{
for(i=0;i<ligne;i++)
{ for(j=0;j<colonne;j++)
la fo je trouve la soluce pour chch les doublons !!
if(sudoku[3][8] == 1){
return 1;
}
else{
return 0;
}
}
}
puis la je ne sait pa comment faire pour apperler ma fonction et retrouver le retour??
Essayes avec
Je n'ai pas pu le tester, je suis sous Windows pour l'instant et mon compilateur C est sous Linux, mais avec les commentaires tu devrais t'en sortir.
int iVérifierDoublon(int iSudoku[9][9]) { int i, j, k; //Compteurs for(i=0;i<9;i++) //On teste toutes les lignes { for(j=0;j<8;j++) //Inutile de tester la dernière colonne elle a déja été testée 8 fois { for (k=j+1;k<9.k++) // Inutile de tester les colonnes précédentes, s'il y avait un doublon il aurait été détecté { if(iSudoku[i][j]==iSudoku[i][k]) return 1; } } } return 0; // pas de doublon }
Je n'ai pas pu le tester, je suis sous Windows pour l'instant et mon compilateur C est sous Linux, mais avec les commentaires tu devrais t'en sortir.
nn lors de la compilation il me dit qu'il y a une erreure de type
de plus je doit declarer mon tableau en variable globale donc elle ne doit pa figuerée selon moi en parametre dans la fonction ??
car la fonction est du type booleene et le tableau est de l'entier
de plus je doit declarer mon tableau en variable globale donc elle ne doit pa figuerée selon moi en parametre dans la fonction ??
car la fonction est du type booleene et le tableau est de l'entier
#include <iostream>
using namespace std;
//declaration en variable globale;
const int ligne=9;
const int colone=9;
int Tsudoku[ligne][colone],i,j;
//procedure de saisie
void saisie(int p1)
{
//SAISIE ET CONTROLE DU TABLEAU
for (i=0;i<ligne;i++)
{ for (j=0;j<colone;j++)
{cout<<"saisir LES ELEMENTS DE LA LIGNE__"<<i+1<<"___"<<"DE LA COLONNE__"<<j+1<<endl;
cin>>Tsudoku[i][j];
while (Tsudoku[i][j]<1 || Tsudoku[i][j]>9)
{cout<<"erreure de saisie recommencer !!"<<endl;
cin>>Tsudoku[i][j];}
}
}
//AFFICHAGE DU TABLEAU
for (i=0;i<ligne;i++)
{for (j=0;j<colone;j++)
cout<<Tsudoku[i][j]<<"-";
cout<<endl;}
}
int VérifDoublon(int Tsudoku[9][9])
{
int i, j, k; //Compteurs
for(i=0;i<9;i++) //On teste toutes les lignes
{
for(j=0;j<8;j++) //Inutile de tester la dernière colonne elle a déja été testée 8 fois
{
for (k=j+1;k<9.k++) // Inutile de tester les colonnes précédentes, s'il y avait un doublon il aurait été détecté
{
if(Tsudoku[i][j]==Tsudoku[i][k])
return 1;
}
}
}
return 0; // pas de doublon
}
int main()
{int a,b;
//appel de la procedure saisie
saisie(a);
//appel de la fonction et affectation de la reponse si il y a des doublons oui ou non
VérifDoublon(b);
}
using namespace std;
//declaration en variable globale;
const int ligne=9;
const int colone=9;
int Tsudoku[ligne][colone],i,j;
//procedure de saisie
void saisie(int p1)
{
//SAISIE ET CONTROLE DU TABLEAU
for (i=0;i<ligne;i++)
{ for (j=0;j<colone;j++)
{cout<<"saisir LES ELEMENTS DE LA LIGNE__"<<i+1<<"___"<<"DE LA COLONNE__"<<j+1<<endl;
cin>>Tsudoku[i][j];
while (Tsudoku[i][j]<1 || Tsudoku[i][j]>9)
{cout<<"erreure de saisie recommencer !!"<<endl;
cin>>Tsudoku[i][j];}
}
}
//AFFICHAGE DU TABLEAU
for (i=0;i<ligne;i++)
{for (j=0;j<colone;j++)
cout<<Tsudoku[i][j]<<"-";
cout<<endl;}
}
int VérifDoublon(int Tsudoku[9][9])
{
int i, j, k; //Compteurs
for(i=0;i<9;i++) //On teste toutes les lignes
{
for(j=0;j<8;j++) //Inutile de tester la dernière colonne elle a déja été testée 8 fois
{
for (k=j+1;k<9.k++) // Inutile de tester les colonnes précédentes, s'il y avait un doublon il aurait été détecté
{
if(Tsudoku[i][j]==Tsudoku[i][k])
return 1;
}
}
}
return 0; // pas de doublon
}
int main()
{int a,b;
//appel de la procedure saisie
saisie(a);
//appel de la fonction et affectation de la reponse si il y a des doublons oui ou non
VérifDoublon(b);
}
sachant que je dois realisé trois fonction de verification l'une pour les lignes l'autre pour les colonnes et la dernieres pour les carrés
en gros je dois avoir
une procedure saisie
une procedure affichage
une fonction booléenne controleligne(avec le numeros de la ligne sera passé en parametre)
pouvez vous svp juste m'expliquer comment dois je faire avec cette fonction
une procedure saisie
une procedure affichage
une fonction booléenne controleligne(avec le numeros de la ligne sera passé en parametre)
pouvez vous svp juste m'expliquer comment dois je faire avec cette fonction
OK MERCI BEAUCOUP DE TON AIDE
MAIS MAINTENANT IL VA FALLOIR QUE JE LE COMPRENNE ET QUE JE LE MODIFIE
MAIS MAINTENANT IL VA FALLOIR QUE JE LE COMPRENNE ET QUE JE LE MODIFIE
A vue de nez le problème vient de là
//déclaration en variable globale;
const int ligne=9;
const int colone=9;
//Les déclarations de tableau commencent à 0,
(0,1,2,.8) 9 chiffres comme te l'avait précisé un de mes prédesseurs.
Je n'ai pas lu plus looin.
//déclaration en variable globale;
const int ligne=9;
const int colone=9;
//Les déclarations de tableau commencent à 0,
(0,1,2,.8) 9 chiffres comme te l'avait précisé un de mes prédesseurs.
Je n'ai pas lu plus looin.
main.cpp:26: error: `V' does not name a type
main.cpp:32:35: invalid suffix "k" on floating constant
Process terminated with status 1 (0 minutes, 0 seconds)
3 errors, 0 warnings
voila le rapport d'erreure
main.cpp:32:35: invalid suffix "k" on floating constant
Process terminated with status 1 (0 minutes, 0 seconds)
3 errors, 0 warnings
voila le rapport d'erreure