PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Zu blöd ein Bool-Array zu initialiseren?


BoneDaddy
2008-01-30, 16:54:04
Ich stehe gerade wirklich auf dem Schlauch. Ich möchte zur Lösung des 8-Dame Problems ein 2 Dimensionales Bool-Arrays mit false initialiseren. Allerdings kommt dabei nur schrott heraus.
Denn Anstatt von Einsen und Nullen bzw. nur Nullen, bekommen ich die verschiedensten Zahlen heraus.

#include <iostream>
#include <sstream>

using namespace std;

class uebung3 {
int field_size_x;
int field_size_y;
bool field[8][8];

void init(int x, int y) {
for(int i=0; i < y; i++) {
for(int j=0; j < x; j++) {
field[y][x] = false;
}
}
}

void printa() {
for(int i=0; i < field_size_y; i++) {
for(int j=0; j < field_size_x; j++) {
cout << field[j][i] << " ";
}
cout << "\n";
}
}

Neomi
2008-01-30, 17:06:51
Versuch mal "field[j][i] = false;", sind ja schließlich die Iteratoren.

BoneDaddy
2008-01-30, 17:08:23
habe Bananen auf den Augen. Der Fehler lag in der init() Methode - hatte immer dasselbe Feld initialisiert. :(

edit: Nun hatte ich es auch gefunden. :)
Danke für den Tipp.

Gast
2008-01-31, 07:59:27
Sowas ist zwar immer gefährlich, aber bei einem festen c-array könnte man statt den beiden Schleifen auch nur...
memset( &field, 0, 8*8);
machen

Shink
2008-01-31, 08:31:29
Hmm... vielleicht besser nicht angewöhnen.

Gast
2008-01-31, 08:59:05
memset( &field, 0, 8*8);Dann auch besser memset( &field, 0, sizeof(field)); aber aufpassen, daß es kein Pointer ist - oder memset( &field, 0, sizeof(bool)*8*8);

Coda
2008-01-31, 13:51:09
Vor allem ist sizeof(bool) bei VC++ 4.