![]() |
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 |
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 :tux: ! |
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 |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag