Introduzione alle matrici 3D in C

Una matrice è un gruppo di elementi con lo stesso tipo di dati (omogeneo). Si chiama anche un tipo di dati Derivato. Come già notato, un array 3D aumenta lo spazio in modo esponenziale e, una posizione aggiuntiva aggiunta per individuare l'elemento nell'array. In questo argomento, impareremo le matrici 3D in C.

Ad esempio, considera un edificio a 4 livelli con molti slot per il parcheggio delle biciclette. Quindi, qui per ottenere le direzioni di slot perfette della bici parcheggiata, dobbiamo dire il numero di livello con il numero di riga e colonna. Quando indichi semplicemente l'array, la riga 7 e la colonna 4, a quale livello cerca? Questo array 3D serve solo per memorizzare più quantità di dati e rappresentare le posizioni.

Come possiamo definirli e implementarli? Andando oltre, capiamo quei concetti.

Sintassi:

In C, le matrici dimensionali possono essere dichiarate come segue:

Quindi, allo stesso modo, possiamo dichiarare l'array 3-D come:

Il significato della rappresentazione sopra può essere inteso come:

  1. La memoria allocata alla variabile c è del tipo di dati int.
  2. La capacità totale che può contenere questo array è 2 * 3 * 4, che equivale a 24 elementi.
  3. I dati vengono rappresentati sotto forma di 2 matrici con 3 righe e 4 colonne ciascuna.
colonne
c (0) Array Righec (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)
colonne
c (1) Array Righec (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)

È possibile accedere ai dati all'interno dell'array tramite la rappresentazione sopra. Nella rappresentazione di array 3D, la prima parentesi quadra rappresenta il livello dell'array che deve essere considerato, il secondo sarebbe il numero di righe e il terzo è per il numero di colonne.

La rappresentazione indice dell'array per il primo elemento inizia sempre con zero e termina con size-1. Pertanto, ad esempio, se il numero di righe è 3, la rappresentazione dell'indice per l'accesso ai dati nelle righe sarà 0, 1 e 2. La stessa logica si applica anche al livello di array e agli indici di colonna. Per la rappresentazione di cui sopra, per ottenere i dati di 1 ° livello dell'array con 2a riga 3a colonna, possiamo accedere con c (0) (1) (2).

Inizializzazione di array 3D in C

Possiamo inizializzare un array 3D simile all'array 2D.

Come accennato in precedenza, il numero totale di elementi che possono essere inseriti nell'array sarebbe arraysize1 * arraysize2 * arraysize3. Qui è 2 * 4 * 3, che dà 24.

Inserimento di elementi:

Simile all'array 2D, per l'inserimento di elementi in un array 3D, è necessario inserire i dati in livelli, righe e colonne. Quindi, per questo, usiamo il concetto di loop. Nel processo sopra per l'inizializzazione dei dati nella matrice, avevamo predefinito i valori.

Qui, gli elementi possono essere inseriti dinamicamente dall'utente, secondo i requisiti. Di seguito è riportato un codice di esempio per l'inserimento degli elementi.

Codice:

#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));
)
)
)
)

Come osservato nel codice:

  1. Innanzitutto, dichiariamo la variabile di matrice e le dimensioni della matrice con il numero di livelli della matrice, delle righe e delle colonne.
  2. Dichiariamo quindi tre variabili per iterare sugli elementi dell'array.
  3. Quindi, per i loop vengono utilizzati. Il primo ciclo è per l'iterazione dei livelli, il secondo è per le righe e il terzo è per le colonne.
  4. La funzione Scanf viene utilizzata per leggere i dati durante l'immissione, quindi posizionare il valore inserito in quelle posizioni di i, j e k.

Nell'esempio sopra, abbiamo inserito i dati in una matrice con 2 livelli, 4 righe e 3 colonne. L'output di quanto segue può essere ottenuto come di seguito:

Poiché non abbiamo utilizzato la funzione printf per visualizzare l'output, il programma scritto ha letto solo i valori immessi dall'utente. Dopo aver scritto la funzione di stampa (usando per i loop), l'output verrà visualizzato come:

Elementi di aggiornamento:

L'aggiornamento degli elementi nell'array può essere effettuato specificando un elemento particolare da sostituire o identificando una posizione in cui deve essere effettuata la sostituzione. Per l'aggiornamento, in genere sono necessari i seguenti dettagli.

  1. Elementi di un array
  2. Posizione / elemento, dove deve essere inserito
  3. Il valore da inserire.

Per aggiornare i dati in un array attraverso i dettagli dell'elemento, per prima cosa, dobbiamo cercare quell'elemento nell'array, comprenderne la posizione e quindi sostituire il vecchio elemento con il nuovo elemento.

Qui di seguito abbiamo fornito due esempi di aggiornamento dell'elemento di un array 3D.

Innanzitutto, facciamo un esempio in cui la posizione dell'elemento da aggiornare è già nota.

Codice

#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;
)

Nel programma sopra, viene selezionato l'elemento al 1 ° livello, 1 a riga e 1 a colonna e il valore dei dati in quella posizione è stato aggiornato.

L'output di cui sopra è il seguente:

Nel secondo esempio, mostreremo come la posizione dell'elemento può essere presa dinamicamente come valore immesso dall'utente e aggiorneremo il valore dell'elemento in quella particolare posizione.

Codice:

#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;
)

L'output è il seguente. Qui, abbiamo usato la funzione scanf per leggere il valore fornito dall'utente secondo la sua scelta per la posizione di un elemento in base al numero di array, riga e numeri di colonna.

Come esercizio, puoi provare a scrivere un programma aggiornando l'intera colonna della matrice con i valori immessi dall'utente?

Ora, come sappiamo, nell'array 3D, dichiariamo la dimensione dell'array all'inizio stesso. Siamo a conoscenza delle dimensioni dell'array, ma cosa succede se l'utente fornisce un numero di riga e colonna casuale al di fuori delle dimensioni dell'array?

Cosa succede se, inseriamo più elementi di quelli necessari all'interno dell'array?

Si noti che poiché non abbiamo scritto alcuna condizione if / else o blocchi try / catch, l'output della matrice non cambia. Tuttavia, possiamo scrivere il codice utilizzando le condizioni sopra menzionate per visualizzare errori in tali casi.

Come ultimo esempio, non sei curioso di sapere cosa succede se saltiamo alcuni elementi in mezzo? Cosa fa il mio programma?

Come osservato nell'output sopra:

  1. Abbiamo perso 4 valori nell'input, semplicemente dando spazio e premendo invio
  2. Ma avevamo quello scopo per inserire i 4 elementi rimanenti.
  3. Quindi abbiamo specificato l'ultimo livello, l'ultima riga e l'ultimo elemento colonna da modificare in 78. E l'output è come previsto, vero?

Eliminazione di elementi

Dopo i concetti di inserimento e aggiornamento dei dati all'interno dell'array 3D, vediamo ora come possiamo eliminare un'intera riga dall'array.

Abbiamo scritto un programma in un formato semplice in modo che il concetto di diverse operazioni possa essere compreso facilmente.

Codice:

#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 ++;
)

altro
(
for (k = 0; k <3; k ++)
(
printf (“\ t% d”, c (i) (j) (k));
)
)
printf ( “\ n”);
)
printf ( “\ n”);
)
)

Ha preso dinamicamente i valori di un array. I passaggi seguiti sono:

  1. Ha chiesto all'utente di inserire il numero (indice) della riga che deve essere eliminata.
  2. Utilizzo per l'iterazione ciclica di livelli, righe e colonne di array. Stiamo confrontando se il numero di riga e il numero di input dell'utente corrispondono o meno.
  3. Se corrispondono e se il numero di riga è inferiore alla dimensione dell'array, stiamo stampando la riga successiva. Altrimenti, stiamo stampando la riga così com'è.
  4. Qui, poiché non avevamo alcuna condizione a livello di array, il numero di riga specificato viene eliminato da entrambi i livelli di array.

L'output è il seguente:

E se, diamo il numero di riga al di fuori del limite dell'array?

Non troverà la riga per cancellare ed uscire dal programma stampando l'intero array.

Come già noto, possiamo persino dichiarare i valori per il numero di righe e colonne in modo dinamico e scrivere il programma di conseguenza.

Non sembra semplice e facile da imparare?

Come esercizio, puoi provare a cancellare un particolare elemento per l'array 3d ora?

Conclusione

In questa sezione, abbiamo appreso le operazioni di base sugli array tridimensionali.

L'array 3D contiene molti set di array 2-D. Come abbiamo visto la scacchiera come esempio di un array 2D, se avessimo messo insieme molte scacchiere, l'array 3D può aiutarci prima a scegliere la scacchiera con cui vuoi giocare e poi cercare le righe e le colonne di quella scacchiera.

Prova a risolvere le operazioni di base delle matrici 3d e divertiti a imparare C.

Articoli consigliati

Questa è una guida agli array 3D in C. Qui discutiamo l'inizializzazione di un array 3D simile all'array 2D e agli elementi dell'array. Puoi anche leggere il seguente articolo per saperne di più -

  1. Matrici in R
  2. Tipi di dati in MATLAB
  3. Come creare una matrice in C #?
  4. Come sono state definite le matrici 3D in Java?
  5. Matrici in PHP

Categoria: