Salut Tlm,

J'ai un petit probleme d'allocation de memoire je pense.
J'ai beaucoup de mal a l'identifier.

je peux creer des grilles de taille 4 et plus mais pas de taille 2 ou 3....

qqun peut il m'eclairer svp

merci bcp

--------------------------------------------------------------------------

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
#ifndef GRILLE_HPP
#define GRILLE_HPP
 
class Grille {
 
      public:
             Grille(int dim);
             Grille(Grille &g);
             ~Grille();
             int getDimension();
             int getValeur(int x, int y);
             bool ligneEstVide(int x);
             bool colonneEstVide(int y);
             void ViderPosition(int x, int y);
             void afficher();
 
      private:
             int dimension;
             int** tabValeurs;
 
};
 
#endif
--------------------------------------------------------------------------

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
62
63
64
65
66
67
68
69
70
#include "Grille.hpp"
#include <iomanip>
#include <iostream>
 
using namespace std;
 
Grille :: Grille(int dim) {
    tabValeurs = new int * [dimension = dim];
    for (int i = 0; i < dimension ; i++){
        tabValeurs[i] = new int [dimension];
        for (int j = 0; j < dimension; j++){
            tabValeurs[i][j] = 0;
        }
    }
}
 
Grille :: Grille(Grille &g) {
    tabValeurs = new int * [g.dimension];
    for (int i=0;i<g.dimension;i++){
        tabValeurs[i] = new int [g.dimension];
        for (int j = 0;j < g.dimension; j++){
            tabValeurs[i][j] = g.tabValeurs[i][j];
        }
    }
}
 
Grille :: ~Grille() {
    delete tabValeurs;
}
 
int Grille :: getDimension(){
    return dimension;
}
 
int Grille :: getValeur(int x, int y){
    return tabValeurs[x][y];
}
 
bool Grille :: ligneEstVide(int x){
     for (int i = 0;i<dimension;i++){
         if (tabValeurs[x][i]!=1111){
            return false;
         }
     }
     return true;
}
 
bool Grille :: colonneEstVide(int y){
     for (int i = 0;i<dimension;i++){
         if (tabValeurs[i][y]!=1111){
            return false;
         }
     }
     return true;
}
 
void Grille :: ViderPosition(int noLigne, int noColonne) {
     tabValeurs[noLigne][noColonne] = 1111;
}
 
void Grille :: afficher(){
	for ( int i = 0; i < dimension; ++i ) {
		for ( int j = 0 ; j < dimension; ++j ) {
			cout << "|";
            cout << setw(3) << tabValeurs[i][j];
            cout << " |";
		}
		cout << endl << endl;
	}
}
--------------------------------------------------------------------------
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
 
    //Grille grille(2);
    //Grille grille1(3);
    Grille grille2(4);
    Grille grille3(5);
    Grille grille4(6);
    Grille grille5(7);
    Grille grille6(8);
    //cout<<grille.getDimension()<<endl;
    //cout<<grille.getValeur(2,2)<<endl;
    //cout<<grille.getValeur(3,3)<<endl;
    //cout<<grille.getValeur(1,1)<<endl;
    grille6.afficher();
    grille5.afficher();
    grille4.afficher();
    grille3.afficher();
    grille2.afficher();
    //grille1.afficher();
    //grille.afficher();
--------------------------------------------------------------------------