Bonjour,

Je cherche à faire un Sudoku et j'ai un problème pour changer les valeurs de mes QVector.
J'ai une QList de QVector pour représenter les lignes, les valeurs sont initialisées à -1 au départ. J'essaye ensuite de faire des insertions dans ma grille en modifiant les valeurs.

Voici mon Grille.h

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
#ifndef GRILLE_H_
#define GRILLE_H_
#include <QString>
#include <QMatrix>
#include <QVector>
#include <QList>
 
 
class Grille
{
    private:
            //La taille de la grille.
            int taille_;
            //La matrice représentant le grille.
            QList<QVector<int> > matrice_;
            Grille();
 
    public:
            virtual ~Grille();
            static Grille* chargerGrille(QString path);
            void setTaille(int taille);
            int getTaille();
            QList<QVector<int> > getMatrice();
            bool controleLigne(int index, int valeur);
            bool controleColonne(int index, int valeur);
            bool controleCarre(int ligne, int col, int valeur);
            QList<int> getPossibilite(int ligne, int col);
            void inserer(int ligne, int col, const int &valeur);
};
 
#endif /* GRILLE_H_ */
et voici ma fonction inserer :

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
/**
  Insérer une valeur dans la grille
  */
void Grille::inserer(int ligne, int col, const int &valeur)
{
    this->matrice_[ligne][col] = valeur;
 
    qDebug("-------------------------------");
    for(int i = 0; i < matrice_.size(); i++)
    {
        QVector<int> ligne = matrice_.value(i);
        QVectorIterator<int> it(ligne);
        int col = 0;
        QString l;
        while(it.hasNext())
        {
            int val = it.next();
            l.append(QString::number(val)+" ");
            col++;
        }
        qDebug(l.toAscii());
    }
    qDebug("-------------------------------");
}

Et voilà ce que me donne la console. J'insère un 3 dans la deuxième ligne, l'affichage prend en compte le changement. Mais lors d'une autre insertion, le 3 disparaît. Pourtant il me semble bien modifier le bon QVector.

-------------------------------
-1 -1 6 7 -1 -1 -1 -1 3
5 [3] -1 -1 4 -1 -1 -1 -1
1 2 -1 -1 -1 -1 7 -1 6
-1 1 -1 -1 -1 -1 5 6 -1
4 -1 2 -1 5 1 -1 8 -1
-1 5 7 -1 -1 -1 2 -1 -1
-1 -1 -1 3 9 6 -1 -1 5
7 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 2 -1 -1 -1 4 1
-------------------------------
-------------------------------
1 -1 6 7 -1 -1 -1 -1 3
5 [-1]! -1 -1 4 -1 -1 -1 -1
1 2 -1 -1 -1 -1 7 -1 6
-1 1 -1 -1 -1 -1 5 6 -1
4 -1 2 -1 5 1 -1 8 -1
-1 5 7 -1 -1 -1 2 -1 -1
-1 -1 -1 3 9 6 -1 -1 5
7 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 2 -1 -1 -1 4 1
-------------------------------

merci d'avance.