n.Dimensionale arrays in c/c++

Graf-Porno

Ensign
Registriert
Okt. 2004
Beiträge
238
Hi liebe CB'sler hab mal wieder ein kleines Prob versuch gerade ein nDimensionales array zu

erstellen bekomm es absolut nicht hin, vor allen Dingen da ich erst seit 2 wochen was mit C

mache, aber soweit ich das verstanden habe, mein Problem nur mit Pointer lösen kann.

Sowas in etwa hab ich im Netz gefunden, ich bekomms aber gerade mal echt nicht hin.

PHP:
#include <cstdio>

int main (void) {

double mytype **array;
array = new mytype*[20]; // Anzahl Spalten
for( int i = 0; i < 20; i++ )
{
array[i] = new int[10]; // Anzahl Zeilen
};
return (0);
};


Ich wäre echt dankbar wenn jemand mal ein koplettes array programieren könnte sodass ich einmal sehe wie sowas geht.

Am besten ohne das Bsp.^^ das ichs einfach mal pasten könnte und damit bissl rumprobieren könnte.

Danke im Vorraus.
 
Zuletzt bearbeitet:
Hallo,

ich sehe jetzt gerade nicht wirklich dein Problem. Geht es darum, dass sich der Code nicht kompilieren lässt? Dann nimm mal die Semikolons hinter der main()-Funktion, sowie hinter der for-Schleife weg. Außerdem ist die Zeile
Code:
double mytype **array;
so nicht korrekt. Wenn double der Typ sein soll, dann müsste die Deklaration so aussehen:
Code:
double **array;
Genau so musst du dann natürlich auch nicht
Code:
array = new mytype*[20];
sondern
Code:
array = new double*[20];
schreiben.
Der Rest sieht auf den ersten Blick korrekt aus, nur muss es in der Schleife auch wieder (in dem Beispiel mit double als Typ)
Code:
array[i] = new double[10];
heißen.

ph4nt0m

Edit: Hier also mal das komplette Listing (Achtung, nicht gestestet!):
Code:
#include <cstdio>

int main (void) 
{
   double **array;
   array = new (double*)[20];	// 20 Spalten
   for(int i=0; i<20; i++)	
      array[i] = new double[10];	// 10 Zeilen

   return 0;
}
 
Zuletzt bearbeitet:
Hi, jo danke der Text davor war auch nur aus sonem sinnlosen Bsp hab ja extra beigeschreiben den nicht benutzen :D.

Aber erstmal besten dank werds mal testen
 
Das alte Problem mit den Mehrdimensionalen Arrays per Pointer... Eine Auflistung der geläufigen Möglichkeiten findest du hier.

Wenn es sich nicht vermeiden lässt, muss man sich auf sowas enlassen, allerdings für Matrizen/Tensoren (also für Berechnungen) ist es oft passender ein Mehrdimensionales Array als Eindimensionales umzuschreiben. Ist weniger anfällig für Fehler und teilweise performanter (wenn man es geschickt anstellt).

Ansonst hat ja schon ph4nt0m ja schon alles gesagt.
 
Zuletzt bearbeitet:
Wenn die Arrays nicht allzu groß sind (was ich bei den Anfängerbeispielen annehme), dann kannst du das alles gleich statisch am Stack deklarieren. Ist so auch um ein ordentliches Eck schneller. Hier ein kleines Beispiel, das ein Schachbrett zeichnet:

#include "stdio.h"
#include "conio.h"

int main()
{
char feld[8][8]; //Feld deklarieren

for(int i=0;i<8;i++) //Alle Zeilen durchgehen
{
for(int j=0;j<8;j++) //Alle Spalten durchgehen
{
if((i+j)%2==0) //Jedes zweite Feld ist weiß/schwarz
feld[j]=219; //Weißes Feld
else
feld[j]=255; //Leerzeichen (schwarzes Feld)
}
}

for(int i=0;i<8;i++) //Ausgeben des Feldes
{
for(int j=0;j<8;j++)
printf("%c",feld[j]);
printf("\n");
}

getch();
}
 
Zurück
Oben