Einführung in 3D-Arrays in C

Ein Array ist eine Gruppe von Elementen mit demselben (homogenen) Datentyp. Es wird auch als abgeleiteter Datentyp bezeichnet. Wie bereits bemerkt, vergrößert ein 3D-Array den Raum exponentiell und es wird eine zusätzliche Position hinzugefügt, um das Element im Array zu lokalisieren. In diesem Thema lernen wir 3D-Arrays in C kennen.

Betrachten Sie beispielsweise ein 4-stöckiges Gebäude mit vielen Stellplätzen für Fahrräder. Um hier die perfekten Steckplatzrichtungen für das geparkte Fahrrad zu erhalten, müssen wir die Ebenennummer mit Zeilen- und Spaltennummer angeben. Wenn Sie dem Array, Zeile 7 und Spalte 4, nur mitteilen, nach welcher Ebene es sucht? Dieses 3D-Array dient nur zum Speichern größerer Datenmengen und zur Darstellung der Positionen.

Wie können wir sie definieren und umsetzen? Gehen wir noch weiter und verstehen wir diese Konzepte.

Syntax:

In C können dimensionale Arrays wie folgt deklariert werden:

Auf die gleiche Weise können wir das 3-D-Array wie folgt deklarieren:

Die Bedeutung der obigen Darstellung kann verstanden werden als:

  1. Der der Variablen c zugewiesene Speicher ist vom Datentyp int.
  2. Die Gesamtkapazität dieses Arrays beträgt 2 * 3 * 4, was 24 Elementen entspricht.
  3. Die Daten werden in Form von 2 Arrays mit jeweils 3 Zeilen und 4 Spalten dargestellt.
Säulen
c (0) Array Reihenc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
Säulen
c (1) Array Reihenc (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)

Auf die Daten innerhalb des Arrays kann über die obige Darstellung zugegriffen werden. In der Darstellung von 3D-Arrays stellt die erste eckige Klammer die Ebene des Arrays dar, die berücksichtigt werden muss, die zweite ist die Anzahl der Zeilen und die dritte die Anzahl der Spalten.

Die Indexdarstellung des Arrays für das erste Element beginnt immer mit Null und endet mit Größe-1. Wenn also beispielsweise die Anzahl der Zeilen 3 beträgt, lautet die Indexdarstellung für den Zugriff auf die Daten in Zeilen 0, 1 und 2. Dieselbe Logik gilt auch für die Indizes auf Array-Ebene und für die Spalten. Für die obige Darstellung können wir auf c (0) (1) (2) zugreifen, um die Daten der 1. Ebene des Arrays mit der 2. Zeile der 3. Spalte zu erhalten.

Initialisieren von 3D-Arrays in C

Wir können ein 3D-Array ähnlich dem 2D-Array initialisieren.

Wie oben erwähnt, wäre die Gesamtzahl der Elemente, die in das Array passen können, arraysize1 * arraysize2 * arraysize3. Hier ist es 2 * 4 * 3, was 24 ergibt.

Elemente einfügen:

Ähnlich wie beim 2D-Array müssen zum Einfügen von Elementen in ein 3D-Array die Daten in Ebenen, Zeilen und Spalten eingefügt werden. Deshalb verwenden wir das Konzept der Schleifen. Im obigen Prozess zum Initialisieren der Daten im Array hatten wir die Werte vordefiniert.

Hier können Elemente je nach Anforderung vom Benutzer dynamisch eingefügt werden. Unten finden Sie einen Beispielcode zum Einfügen der Elemente.

Code:

#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)

Wie im Code angegeben:

  1. Zunächst deklarieren wir die Arrayvariable und die Dimensionen des Arrays mit der Anzahl der Ebenen des Arrays, der Zeilen und der Spalten.
  2. Anschließend deklarieren wir drei Variablen, um die Elemente im Array zu durchlaufen.
  3. Dann werden for-Schleifen verwendet. Die erste Schleife ist für die Ebeneniteration, die zweite für die Zeilen und die dritte für die Spalten.
  4. Die Scanf-Funktion wird verwendet, um die Daten bei der Eingabe zu lesen und dann den eingegebenen Wert an die Positionen i, j und k zu setzen.

Im obigen Beispiel haben wir die Daten in eine Matrix mit 2 Ebenen, 4 Zeilen und 3 Spalten eingefügt. Die Ausgabe der folgenden kann wie folgt erhalten werden:

Da wir die printf-Funktion nicht zum Anzeigen der Ausgabe verwendet haben, hat das geschriebene Programm nur die vom Benutzer eingegebenen Werte gelesen. Nach dem Schreiben der Druckfunktion (unter Verwendung von for-Schleifen) wird die Ausgabe wie folgt angezeigt:

Elemente aktualisieren:

Das Aktualisieren von Elementen in dem Array kann entweder durch Spezifizieren eines bestimmten zu ersetzenden Elements oder durch Identifizieren einer Position, an der das Ersetzen durchgeführt werden muss, erfolgen. Für die Aktualisierung benötigen wir im Allgemeinen die folgenden Angaben.

  1. Elemente eines Arrays
  2. Position / Element, an der es eingefügt werden soll
  3. Der einzufügende Wert.

Um die Daten in einem Array über Elementdetails zu aktualisieren, müssen Sie zuerst nach diesem Element im Array suchen, seine Position verstehen und dann das alte Element durch das neue Element ersetzen.

Im Folgenden sind zwei Beispiele für die Aktualisierung des Elements eines 3D-Arrays aufgeführt.

Lassen Sie uns zunächst ein Beispiel durchgehen, bei dem die Position des zu aktualisierenden Elements bereits bekannt ist.

Code

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

In dem obigen Programm wird das Element auf der 1. Ebene, der 1. Zeile und der 1. Spalte ausgewählt und der Wert der Daten an dieser Position wurde aktualisiert.

Die Ausgabe für oben ist wie folgt:

Im zweiten Beispiel wird gezeigt, wie die Position des Elements dynamisch als vom Benutzer eingegebener Wert übernommen und der Wert des Elements an dieser bestimmten Position aktualisiert werden kann.

Code:

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

Die Ausgabe ist wie folgt. Hier haben wir die scanf-Funktion verwendet, um den vom Benutzer angegebenen Wert gemäß seiner Wahl für die Position eines Elements basierend auf Array-Ebene, Zeilen- und Spaltennummern zu lesen.

Können Sie als Übung versuchen, ein Programm zum Aktualisieren der gesamten Spalte der Matrix mit vom Benutzer eingegebenen Werten zu schreiben?

Nun, wie wir wissen, deklarieren wir im 3D-Array die Größe des Arrays am Anfang. Wir kennen die Größe des Arrays, aber was ist, wenn der Benutzer eine zufällige Zeilen- und Spaltennummer außerhalb unserer Arraygröße angibt?

Was ist, wenn wir mehr Elemente als erforderlich in das Array eingeben?

Beachten Sie, dass sich die Ausgabe der Matrix nicht ändert, da wir keine if / else-Bedingung oder try / catch-Blöcke geschrieben hatten. Wir können den Code jedoch unter Verwendung der oben genannten Bedingungen schreiben, um in solchen Fällen Fehler anzuzeigen.

Sind Sie als letztes Beispiel nicht neugierig, was passiert, wenn wir einige Elemente dazwischen überspringen? Was macht mein Programm?

Wie in der obigen Ausgabe beobachtet:

  1. Wir haben 4 Werte in der Eingabe verpasst, indem wir Leerzeichen eingegeben und die Eingabetaste gedrückt haben
  2. Aber wir hatten diesen Spielraum, um die 4 verbleibenden Elemente einzugeben.
  3. Dann haben wir die letzte Ebene, die letzte Zeile und das letzte Spaltenelement angegeben, die in 78 geändert werden sollen. Und die Ausgabe ist wie erwartet, nicht wahr?

Elemente löschen

Nach den Konzepten zum Einfügen und Aktualisieren der Daten innerhalb des 3D-Arrays wollen wir nun sehen, wie wir eine ganze Zeile aus dem Array löschen können.

Wir haben ein Programm in einem einfachen Format geschrieben, damit das Konzept der verschiedenen Operationen leicht verstanden werden kann.

Code:

#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)

)
j ++;
)

sonst
(
für (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ("\ n");
)
printf ("\ n");
)
)

Hat die Werte eines Arrays dynamisch übernommen. Die folgenden Schritte werden ausgeführt:

  1. Aufforderung an den Benutzer, die Nummer (Index) der zu löschenden Zeile einzugeben.
  2. Verwendung für die Schleifeniteration von Arrayebenen, -zeilen und -spalten. Wir vergleichen, ob die Zeilennummer und die Benutzereingabenummer übereinstimmen oder nicht.
  3. Wenn sie übereinstimmen und die Zeilennummer kleiner als die Größe des Arrays ist, drucken wir die nächste Zeile. Ansonsten drucken wir die Zeile so, wie sie ist.
  4. Da wir hier keine Bedingung für die Ebene des Arrays hatten, wird die angegebene Zeilennummer aus beiden Arrayebenen gelöscht.

Die Ausgabe ist wie folgt:

Was ist, wenn wir die Zeilennummer außerhalb der Array-Grenze angeben?

Die zu löschende Zeile wird nicht gefunden, und das Programm wird durch Drucken des gesamten Arrays beendet.

Wie bereits bekannt, können wir die Werte für die Anzahl der Zeilen und Spalten sogar dynamisch deklarieren und das Programm entsprechend schreiben.

Sieht das nicht einfach und leicht zu lernen aus?

Können Sie als Übung versuchen, ein bestimmtes Element für das 3D-Array jetzt zu löschen?

Fazit

In diesem Abschnitt haben wir die grundlegenden Operationen für dreidimensionale Arrays erlernt.

Das 3D-Array enthält viele Sätze von 2D-Arrays. Wie wir das Schachbrett als Beispiel für ein 2D-Array gesehen haben, kann uns das 3D-Array helfen, zuerst das Schachbrett auszuwählen, mit dem Sie spielen möchten, und dann die Zeilen und Spalten dieses Schachbretts auszuwählen.

Versuchen Sie, die grundlegenden Operationen der 3D-Arrays zu lösen, und haben Sie Spaß beim Lernen von C.

Empfohlene Artikel

Dies ist eine Anleitung zu 3D-Arrays in C. Hier wird die Initialisierung eines 3D-Arrays beschrieben, das dem 2D-Array und den Elementen von Array ähnelt. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -

  1. Arrays in R
  2. Datentypen in MATLAB
  3. Wie erstelle ich ein Array in C #?
  4. Wie werden 3D-Arrays in Java definiert?
  5. Arrays in PHP