IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Sudoku


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut Sudoku
    Voila, voila, dans le cadre d'un projet de TP en informatique, on doit faire un programme permettant de r�soudre un Sudoku, seulement il y a 2 ou 3 choses que je ne comprend pas dans l'�nonc�....
    pour trouver la solution en fait, on utilise une pile ...
    " Pour chaque essai, on conserve dans une structure essai:
    - la posistion de la case pour laquelle on fait l'essai
    la file des prochains symboles � essayer pour cette case. Cette file est une partie de la file des candidats initiaux.
    Chaque structure est conserv�e sur une pile d'essais appel�e essais.

    Voila j'en viens a ma question, comment il faut faire ce type de structure en C++ ???
    Je ne vraiment pas commment il faut la faire, si quelqu'un pouvais me guider ...
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    pile : std::stack
    file : std::queue
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    Membre chevronn� Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    D�tails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par d�faut
    Salut,

    dois tu les reimpl�menter ou bien peux tu utiliser la STL ?

    XXiemeciel

  4. #4
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    j'ai fait une fonction "estDansLigne", une "estDansRegion" et une "estDansColonne", j'ai fait une fonction "candidat" qui fait appel au 3 fonctions pr�c�dentes pour d�terminer quels sont les candidats possibles pour une case donn�e... je stocke ce r�sultat sous forme de file...

    Maintenant faut que je passe a la r�solution proprement dite, et j'ai pour seule aide l'�nonc� que je vous ai recopi� dans le premier post ...
    Citation Envoy� par xxiemeciel
    dois tu les reimpl�menter ou bien peux tu utiliser la STL ?
    Comment sa ???
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  5. #5
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    La pile et la file sont des structures toutes pr�tes en C++, dans la STL.

  6. #6
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut Re: Sudoku
    Citation Envoy� par bucheron67
    Voila, voila, dans le cadre d'un projet de TP en informatique, on doit faire un programme permettant de r�soudre un Sudoku, seulement il y a 2 ou 3 choses que je ne comprend pas dans l'�nonc�....
    pour trouver la solution en fait, on utilise une pile ...
    " Pour chaque essai, on conserve dans une structure essai:
    - la posistion de la case pour laquelle on fait l'essai
    la file des prochains symboles � essayer pour cette case. Cette file est une partie de la file des candidats initiaux.
    Chaque structure est conserv�e sur une pile d'essais appel�e essais.

    Voila j'en viens a ma question, comment il faut faire ce type de structure en C++ ???
    Je ne vraiment pas commment il faut la faire, si quelqu'un pouvais me guider ...
    T'es oblig� d'y aller en force brute ? C'est plus amusant de r�soudre un sudoku par connaissance, avec des r�gles de r�solution qu'en testant b�tement toutes les solutions !

  7. #7
    Membre confirm�
    Inscrit en
    D�cembre 2005
    Messages
    180
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2005
    Messages : 180
    Par d�faut
    J ai justement commence il y a quelques jours a ecrire un programme qui resou les sudoku par regles logiques.
    J ai aussi fait un tableau a 2 index de 81 sur 9 pour tester toutes les possibilites de chaque case, si dans une case il y a que une possibilite , ou bien que une possibilite peut etre seulement dans une case cette possibilite rentre dans la case!

  8. #8
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    Eh bien "Miles" sache qu'il s'agit d'un TP not� en cours et donc on a plutot int�rpet a suivre les r�gles impos�...

    Ont doit faire une structure de pile, et faire des essais, donc voila je sais pas comment faut faire sa ...
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  9. #9
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    C'est vraiment tordu comme �nonc� et vraiment pas g�nial du tout. Je ne dirai rien sur ton prof... Le pire, c'est que j'ai du mal � voir ce qu'il veut que vous fassiez exactement tellement la phrase est floue !
    Je ne vois vraiment pas o� une liste est indispensable dans la structure essai, une liste qui contiendrai la liste des prochaines valeurs possibles, normalement on utilise une pile pour parcourir un arbre en profondeur, l'arbre ici, je le vois comme �tant l'arbre des grilles possibles, la profondeur �tant le nombre de cases fix�es supp�lemntaires, et si on arrive � la profondeur 81, la grille est r�solue...

  10. #10
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    Bon ben le mieux a faire je crois, c'est de voir a la rentr�e ce qu'il attendait exactement, en attendant, ben merci quand meme...
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  11. #11
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    en fait, je viens de comprendre, c'est chaud mais bon: j'ai une autre question a pos�:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    struct position
     
    {
     
    	int lig;
     
    	int col;
     
    };
     
    struct essai
    {
    	position pos;
    	queue<int> q;
    };
    void resoudre(int grille[9][9])
    {
    	essai e;
    	stack<essai> p;
    	queue<int> f;
    	for(int i=0;i<9;i++)
    	{
    		for(int j=0;j<9;j++)
    		{
    			int s=essai.top().q.size();
    			if(grille[i][j]==0)
    			{
    				e.pos.lig=i;
    				e.pos.col=j;
    Y a une suite �videmment, mais j'aiumerais savoir pourquoi quand je compile il me dis que le
    il me dit que "expected primary-expression before "." token

    Je comprend pas pourquoi il me met cela a chaque ligne ou j'ai plus d'un point (par ex e.pos.col)
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  12. #12
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Quand tu as d'autre question, ouvre un nouveau fil...

    Quand tu postes du code avec un probl�me, essaie de poster un code minimum (enl�ve tout ce qui n'est pas n�cessaire), montrant le probl�me mais n'en ayant pas d'autres (ici il manque les inclusions, la fin de la fonction).

    Citation Envoy� par bucheron67
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    struct essai
    {
    	position pos;
    	queue<int> q;
    };
     
    int s=essai.top().q.size();
    essai est un type, pas un objet.

    Je comprend pas pourquoi il me met cela a chaque ligne ou j'ai plus d'un point (par ex e.pos.col)
    Par contre l� �a me semble correct.

  13. #13
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    euh oui, je sais pour le
    int s=essai.top().q.size();
    je l'ai enlev�, c'etait juste un test ...

    mais je ne comprend pas pourquoi il me dis a chaque fois que j'ai une chose du genre
    essai.top().q.pop();
    , qu'il me dise qu'il y a une erreur a la compilation, c'est possible que sa vienne du compilateur ???

    (dsl pour le dernier post, premiere fois que je post un code... )
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  14. #14
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par bucheron67
    je ne comprend pas pourquoi il me dis a chaque fois que j'ai une chose du genre
    essai.top().q.pop();
    Si tu as un probl�me avec essai, c'est normal, c'est un nom de type. Si tu as un probl�me avec e.pos.lig=i;, c'est a priori pas normal. J'ai pris ton code et l'ai compl�t� comme suit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #include <queue>
    #include <stack>
     
    using namespace std;
     
    struct position
    {
       int lig;
       int col;
    };
     
    struct essai
    {
       position pos;
       queue<int> q;
    };
     
    void resoudre(int grille[9][9])
    {
       essai e;
       stack<essai> p;
       queue<int> f;
       for(int i=0;i<9;i++)
       {
          for(int j=0;j<9;j++)
          {
             if(grille[i][j]==0)
             {
                e.pos.lig=i;
                e.pos.col=j;
             }
          }
       }
    }
    je n'ai pas de probl�me de compilation. Si tu en as, poste le code complet qui permet de le reproduire et indique pr�cis�ment quel message d'erreur tu as.

  15. #15
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    Je sais pas comment faire pour poster le source en complet sans faire qu'utiliser les balises code, et vu que le programme fait une centaine de ligne, j'aimerais ne pas les poster ici...

    En tout cas le message d'erreur est le suivant:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     ... primary-expression before " . " token
    Il me met cette erreur a chaque fois qu'il rencontre une ligne du type
    ou
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  16. #16
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    Citation Envoy� par bucheron67
    Je sais pas comment faire pour poster le source en complet sans faire qu'utiliser les balises code
    Quel est le probl�me des balises codes?

    et vu que le programme fait une centaine de ligne, j'aimerais ne pas les poster ici...
    Et bien tu commences par supprimer ce qui n'a pas de rapport avec ton probl�me.

    Il me met cette erreur a chaque fois qu'il rencontre une ligne du type
    ou
    Sans voir les d�clarations de tous ces noms, il est impossible de se prononcer. J'ai donn� du code qui compile sans probl�me, l'as-tu essay�?

  17. #17
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    J'ai essay� ce que tu ma propos� et sa ne marche pas , voila mon code...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #include <iostream>
    #include <string>
    #include <stack>
    #include <queue>
    #include <cassert>
     
    using namespace std;
     
    struct position
    {
    	int lig;
    	int col;
    };
    struct essai
    {
    	position pos;
    	queue<int> q;
    };
     
    void resoudre(int grille[9][9])
    {
    	essai e;
    	stack<essai> p;
    	queue<int> f;
    	for(int i=0;i<9;i++)
    	{
    		for(int j=0;j<9;j++)
    		{
    			if(grille[i][j]==0)
    			{
    				e.pos.lig=i;
    				e.pos.col=j;
    				e.q=candidats(e.pos,grille);
    				essai.push(e);
    			}
    			while(!essai.empty())
     
     			{
     
    				if (essai.top().q.size()==1)
     
    				{
    					grille[essai.pos.lig][essai.pos.col]=essai.top().q.front();
     
    					essai.pop();  
     
    				}
    			}
    		}
    	}
    }
    int main()
     
    {
     
    	int grille[9][9]={0};
    	saisie(grille);
    	afficher(grille);
    	resoudre(grille);
     
    }
    Voila la procedure qui ne marche pas (je l'ai pas encore termin�e, mais sa devrait la compiler quand meme ...
    J'ai regard�, le
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    e.pos.lig=i;
    e.pos.col=j;
    ne pose plus de probleme � la compilation, c'est la suite qui pose probleme, les lignes d'apres ...
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

  18. #18
    R�dacteur
    Avatar de Arnaud F.
    Homme Profil pro
    D�veloppeur COBOL
    Inscrit en
    Ao�t 2005
    Messages
    5 183
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 5 183
    Par d�faut
    mouarf, je suis vraiment un mauvais, j'appelle ma pile p et quand je l'utilise je met "sssai" pas etonnat que sa marche pas, dsl du d�rangement et merci a tous...
    8)
    C'est par l'adresse que vaut le b�cheron, bien plus que par la force. Hom�re

    Installation de Code::Blocks sous Debian � partir de Nightly Builds

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Automatiser la r�ponse au Sudoku
    Par Manopower dans le forum Algorithmes et structures de donn�es
    R�ponses: 204
    Dernier message: 08/12/2006, 14h31
  2. R�solution Sudoku, demande aide...
    Par Alain15 dans le forum C++
    R�ponses: 25
    Dernier message: 02/01/2006, 15h29
  3. Resolution sudoku
    Par Arnaud F. dans le forum C++
    R�ponses: 12
    Dernier message: 20/12/2005, 20h01
  4. Sudoku++
    Par reggae dans le forum Algorithmes et structures de donn�es
    R�ponses: 6
    Dernier message: 29/11/2005, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo