WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 08.04.2002, 19:24   #1
Hamster Riot
Jr. Member
 
Registriert seit: 20.05.2001
Alter: 42
Beiträge: 72


Standard Wie mache ich zweidimensionale Felder in C++?

Hallo Leute!

Ich habe ein Problem beim C++ programmieren. Ich kann leider keine zweidimensionalen Felder machen bzw. ansprechen. Könnt ihr mir bitte helfen?

Danke!

Hamster Riot
Hamster Riot ist offline   Mit Zitat antworten
Alt 08.04.2002, 22:44   #2
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

ganz einfach. zB

unsigned int feldname[30][30];

damit legst du ein 30mal30 feld an.

ansprechen tust du das ganze dann wie folgt: feldname[0][0] = 2;

vorsicht. mehrdimensionale felder können unmengen an arbeitsspeicher verschlingen. (was unter windows generell zu abstürzen führt) darum !
irrsinn ist offline   Mit Zitat antworten
Alt 09.04.2002, 02:43   #3
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Mehrdimensionale Felder legt man dynamisch so an:

int * reserve_space_for_3dim_integer_matrix (int dim1, int dim2, int dim3)
{
int *startadresse;
startadresse= (int *) malloc( sizeof(int) * (dim1 * dim2 * dim3 + 4) );

startadresse[0]= 3; /* 3 Dimensionen */
startadresse[1]= dim1; /* Ausdehnung der 1. Dimension */
startadresse[2]= dim2; /* Ausdehnung der 2. Dimension */
startadresse[3]= dim3; /* Ausdehnung der 3. Dimension */

return startadresse;
}

void main (void)
{
int *zeiger_auf_3dimensionale_matrix; /* feld mit 3 dimensionen */

zeiger_auf_3dimensionale_matrix= reserve_space_for_3dim_integer_matrix(10,20,12);

if(!zeiger_auf_3dimensionale_matrix) { printf("zuwenig freier Speicher vorhanden !\n"); exit(0); }

matrix_werte_einlesen(zeiger_auf_3dimensionale_mat rix);
matrix_werte_eingeben_bzw_nachtraeglich_veraendern (zeiger_auf_3dimensionale_matrix);
matrix_manipulieren(zeiger_auf_3dimensionale_matri x);
matrix_werte_ausgeben(zeiger_auf_3dimensionale_mat rix);
matrix_in_einer_datei_sichern("C:\\DAT\\matrix.dat ",zeiger_auf_3dimensionale_matrix);

/* Speicherplatz, der dynamisch angefordert worden ist, wieder freigeben am Programmende */
free(zeiger_auf_3dimensionale_matrix);
}

Der Zugriff auf das x.te y.te z.te Element erfolgt so:

int return_element_of_3dimensional_array(int *array, int x, int y, int z)
{
return *(array + 1 + array[0] + ((array[2] + array[3]) * x + array[3] * y + z));
}

void main (void)
{

int a,b,c,*matrix;

matrix= reserve_space_for_3dim_integer_matrix(2,3,5);

if(!matrix) { printf("zuwenig freier Speicher vorhanden !\n"); exit(0); }

/* Ausgabe aller Elemente des Arrays (=der Matrix) */

for(a=0;a<matrix[1];a++)
for(b=0;b<matrix[2];b++)
for(c=0;c<matrix[3];c++)
printf("Das Element [%d][%d][%d] lautet: %d\n",a,b,c,return_element_of_3dimensional_array(m atrix,a,b,c));
}


Das Programm bzw. die Funktionen kann bzw. können selbstverständlich auch von 3 dimensionaler Behandlung eines Arrays auf die Behandlung allgemein n-dimensionaler Felder (also Arrays) umgeschrieben werden. Im Element 0 ... matrix[0] ... steht die Anzahl der Dimensionen. Danach folgen die Ausprägungen der Dimensionen.

Kikakater
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:41 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag