Heb weer iets vaags, heb dit nog nooit gehad:
Ik gebruik in een programma om het koninginnenprobleem op te lossen een dubbele vector die het schaakbord voorsteld met daarin objecten van het type "vak". En vak heb ik d.m.v. een struct gedefinieerd en stellen gewoon twee booleans voor (een boolean om te zien of er een koningin opstaat en een boolean om te zien of dat vakje al eens gecontroleerd is) ('t is via backtracking).
Kortom gewoon wat standaard simple stuff dacht ik. Ik laat het programma runnen en ik krijg een oplossing voor het probleem echter bij het destructen loopt het mis. Ik krijg dan de volgende error:
Wat code:
Ik gebruik in een programma om het koninginnenprobleem op te lossen een dubbele vector die het schaakbord voorsteld met daarin objecten van het type "vak". En vak heb ik d.m.v. een struct gedefinieerd en stellen gewoon twee booleans voor (een boolean om te zien of er een koningin opstaat en een boolean om te zien of dat vakje al eens gecontroleerd is) ('t is via backtracking).
Kortom gewoon wat standaard simple stuff dacht ik. Ik laat het programma runnen en ik krijg een oplossing voor het probleem echter bij het destructen loopt het mis. Ik krijg dan de volgende error:
Ik heb hierop wat gegoogled maar die wijzen allemaal verschillende kanten uiten. Ik vind het ook maar vaag dat ik een geheugenlek zou veroorzaakt hebben terwijl ik gewoon twee STL-functies gebruik en me daar toch niets van geheugenbeheer moet aantrekken want daarom gebruik ik juist STL :-)Debug error!
Program: ....
DAMAGE: after normal block (#45) at 0x00300090
Wat code:
C++:
1
2
3
4
5
6
7
8
9
10
| /*vakje van een bord*/ #ifndef VAK_H #define VAK_H struct vak { bool gevuld; bool gecontroleerd; }; #endif |
C++:
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
| /*Schaakbord*/ #ifndef BORD_H #define BORD_H #include "vak.h" #include <vector> class bord { private: std::vector<std::vector<vak> > schaakbord; int zijde; public: ~bord(); bord(int n); bool zetStuk(int rij, int kolom); bool controleerStuk(int rij,int kolom); void wisStuk(int rij, int kolom); void zoekOplossing(); void zetControleAan(int rij, int kolom); void zetControleUit(int rij, int kolom); int bord::keerterug(int rij,int kolom); void print(); }; #endif |
C++:
1
2
3
4
5
6
7
8
9
10
11
| //bijhorende constructor en destructor bord::bord(int n) : schaakbord(n), zijde(n) { for(int i=0;i<zijde;i++) { for(int j=0;j<zijde;j++) { schaakbord[i][j].gevuld=false; schaakbord[i][j].gecontroleerd=false; } } } bord::~bord() {/*verwijder alle dynamisch aangemaakte dingen*/} |
C++:
1
2
3
4
5
6
7
8
9
10
11
| /*Koninginnen probleem: de main (het testprogramma)*/ #include "bord.h" #include <iostream> #include <ctime> int main(void) { bord b(8); b.zoekOplossing(); b.print(); return 0; } |
[ Voor 18% gewijzigd door Verwijderd op 12-06-2004 09:21 ]