JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=5216788ccebdadc9d8b0d1f461fe172bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Zwei dimensionales Feld aufm Stack

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Tarek
Gast








BeitragVerfasst am: 22.09.2002, 16:10    Titel: Zwei dimensionales Feld aufm Stack Antworten mit Zitat

Hi alle zusammen,
ich habe das Problem, dass ich nicht in der Lage bin ein Zweidimensionales Feld aus Integern auf dem Stack zu erzeugen. Also ich erhalte aus einer Datei die Breite und die Höhe eines Feldes als Strings, diese werden von String in Integer mit Hilfe von atoi konvertiert. Nun meckert der Compiler rum, dass keine konstante Feldgrenze gesetzt wurde. Aber bei Felder auf dem Stack braucht man die ja auch eigentlich nicht.
Also habe ich der Zeit folgendes da zu stehen
int *iMap = new int [iMaxX][iMaxY];
und da meckert er rum. Auf den Ratschlags eines Freundes hin, habe ich auch schon
int** iMap = new int[iMaxX][iMaxY];
probiert. Hoffe mir kann wer weiterhelfen.

Gruss Tarek
Nach oben
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 22.09.2002, 18:19    Titel: Antworten mit Zitat

Das geht so auch nicht...

Code:

int ** array;

array = new int * [WIDTH];  // EDIT

for(int foo = 0; foo < WIDTH; foo++)
   array[foo] = new int[HEIGHT];


Löschen musst du das dann andersrum... also erst in in der Schleife 'delete[] array[foo]' und dann 'delete[] array';
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R


Zuletzt bearbeitet von Hazel am 22.09.2002, 19:58, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 22.09.2002, 18:34    Titel: Antworten mit Zitat

es muss doch:

array = new int*[Width];

for(..)
{
array[loop] = new int[height];
}

heißen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 22.09.2002, 19:59    Titel: Antworten mit Zitat

Sorry wollte ich auch schreiben. Razz
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Starwash
Senior JLI'ler


Alter: 39
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 22.09.2002, 22:58    Titel: Danksagung Antworten mit Zitat

Ich danke euch, dafür dass ihr mir so schnell weitergeholfen habt, aber diese Variante wurde mir schon von einem Freund empfohlen und funktioniert auch gut, aber ich finde sie sehr umständlich und bin eigentlich auf der Such nach einer besseren.
Da es sonst äußerst umständlich wird, falls man mal ein 8/9 oder gar 10 dimensionales Feld benutzen will. Ich weiß zwar noch nicht, wo für ich die brauchen könnte, aber umständlich würde es auf jeden fall werden.
Naja mal sehen, ich bin gerade bei einen Lösungsansatz mit einem Freund zu erarbeiten, welcher eine Klasse sein soll, die ein N-dimensionales Feld erstellen kann. Mal gucken, ob wir das vielleicht hinkriegen. Sofern es möglich ist eine Klasse Rekursiv auzurufen?!?

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 22.09.2002, 23:42    Titel: Antworten mit Zitat

Ob umständlich oder nicht, das ist nunmal die einzige Methode, nur so hat man volle Kontrolle über seinen verbrauchten Speicher, hat alle Adressen usw...

Und ich habe noch NIE einen Anwendungsfall gesehen, der mehr als 4-Dimensionale Felder gebraucht hätte...

Überleg dir doch ganz einfach mal, was für Speicher gebraucht werden würde, legst du ein 10-Dimensionales Array mit einer länge von je 100 Einträgen je Dimension (4 Byte Integer zur vereinfachung.)
Das sind mehrere Terrabyte!!!

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum