Introduzione alla matrice multidimensionale in C

Questo articolo si concentra sull'array multidimensionale in c che viene utilizzato principalmente nell'analisi del computer e della ricerca. In generale, un array focalizza linearmente un'informazione che si dice sia monodimensionale. I dati monodimensionali memorizzano solo informazioni singole come il regno degli studenti. In alcune situazioni, è necessario archiviare i dati in un formato tabella che comprende righe e colonne o gestire dati complessi. Per visualizzarlo abbiamo bisogno di un formato matrice che abbiamo chiamato come array bidimensionali in cui le disposizioni richiedono pixel dell'immagine, grafica. I dati sono archiviati in modo tabellare. Le manipolazioni dell'array vengono eseguite riorganizzando un elemento utilizzando funzioni come rimodella, compressione.

Come dichiarare un array multidimensionale in C?

Sintassi:

La dichiarazione generale dell'array multidimensionale è data come:

type name ( size) (size)……. N;

  • Qui, il nome del tipo di dati - Indica il tipo di elementi (intero, float).
  • Nome array: indica il nome assegnato all'array dimensionale.
  • Dimensione riga: numero di elementi riga es. row-size = 8, quindi l'array ha 8 righe.
  • Dimensioni colonna - Numero di elementi colonna.

Come inizializzare la matrice multidimensionale in C?

La dimensione delle matrici multidimensionali è prevista moltiplicando la dimensione di varie dimensioni. E memorizzano i valori sotto forma di due modi: row-major e column-major. E l'allocazione della memoria convalida sia le proprietà di lunghezza che di rango.

In C, l'array multidimensionale ha tre tipi:

  1. Matrice bidimensionale
  2. Matrice tridimensionale
  3. Matrice quadridimensionale

1. Matrice bidimensionale

L'array bidimensionale è strutturato come matrici e implementato usando righe e colonne, noto anche come array di array. L'allocazione della memoria viene eseguita in riga maggiore e colonna maggiore. E il formato predefinito è Row-Major. Quando si prende un array 2-D, ogni elemento viene considerato esso stesso un array 1-D o noto per essere un insieme di un array 1-D. L'array bidimensionale ne utilizza due per loop o loop nidificati in cui i loop esterni vengono eseguiti da 0 al pedice iniziale.

Sintassi:

type array name ( no. of rows) ( no. of Columns);

Esempio:

int td (4)(3);

qui 4 è il no. di righe e 3 è il n. di colonne.

Inizializzazione di array bidimensionali

L'inizializzazione nell'array 2-D viene eseguita in diversi modi, è mostrata qui.

int m (3)(2) = ((10, 3) (4, 2) (6, 4) (5, 4) (3, 4));
int di (2)(4) = (10, 5, 8, 12, 45, 13, 11, 61);

Qui, abbiamo menzionato il no. di righe e colonne nella casella È obbligatorio assegnare il secondo indice per comprendere il compilatore sulla fine e l'inizio della riga. La tabella seguente mostra l'allocazione di memoria dell'array 2-D.

Il numero di elementi viene determinato manipolando un numero di righe e colonne e moltiplicando no. di righe e colonne rispettivamente. per esempio, il no. di elementi un array contiene B (-2… 4, -3.6). Viene calcolato dal limite inferiore e dal limite superiore.

No. of rows= UB-LB +1
=4-(-2) +1 = 4+2+1= 7
No. of columns = UB-LB +1
= 6-(-3) + 1= 11
No. of elements = Rows * columns = 7 * 11 =77 elements

Implementazione

Viene fatto utilizzando le implementazioni Row major e column-major

Row-major:
La formula per la manipolazione dell'indirizzo è data come:
= B +W ( n(I-1) +(J-1))
Dove b- è l'indirizzo di base e n- No. di colonne per W byte.
Colonna Maggiore:
= B +W ( r(j-1) +(i-1))
dove r - è il no. di file.

Esempi di array bidimensionali

Esempi di array bidimensionali sono:

Esempio 1

Ogni elemento di un array A (-10, 10, 20… 35) richiede 1 byte di memoria. E la matrice si inserisce nella colonna maggiore all'indirizzo 400, trova la posizione di A (0, 30).

Soluzione

BA =400, W=1
R = no. of rows -> 10-(-10) +1 = 21
I= -10; J= 20
Address A (0, 30) = 400 + 1((0-(-10) +21(30-20))) =400 +(10+21*10)
=400 +(10+210) = 620

Un'operazione familiare eseguita nell'array 2-d è l'algebra delle matrici con m * n Matrix of B. Il concetto matematico della matrice è implementato come nella programmazione.

L'esempio seguente memorizza un elemento nel formato matrice e stampa lo stesso.

Codice:

#include
int main ()
(
int a(3)(4), i, j;
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("Enter arr(%d)(%d): ", i, j);
scanf("%d", &a(i)(j));
)
)
printf("\nEntered 2-D array is: \n\n");
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("%3d ", a(i)(j) );
)
printf("\n");
)
return 0;
)

Produzione:

Esempio n. 2

Programma C che esegue la somma di due matrici.

Codice:

#include
int main()
(
int mat(20)(20);
int i, j, r, c;
int s;
printf("Enter number of Rows :");
scanf("%d", &r);
printf("Enter number of Cols :");
scanf("%d", &c);
printf("\nEnter matrix elements :\n");
for(i=0;i< r;i++)
( for(j=0;j< c;j++)
(
printf("Enter the number of inputs (%d, %d) : ", i+1, j+1);
scanf("%d", &mat(i)(j));
)
)
printf("\n");
for(i=0;i< r;i++)
(
s=0;
for(j=0;j< c;j++)
(
printf("%d\t", mat(i)(j));
s+=mat(i)(j);
)
printf("\tSUM : %d", s);
printf("\n");
)
)

Il programma precedente calcola la somma di due matrici A (20, 20) B (20, 20) purché abbiano due matrici identiche. Attraverso il ciclo for, ci vogliono due matrici di input e loop per accettare la matrice.

Produzione:

Esempio n. 3

Trasposizione di una matrice

Scambiare righe e colonne per formare una nuova matrice che è nota come trasposizione di una matrice.

Esempio:

Quindi Transpose dare,

Matrix Transpose Usando il programma C.

Codice:

#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)

Nel programma sopra Per leggere una matrice ne avevamo usati due per i loop e per stamparne la trasposizione si usa il loop nidificato per visualizzare l'output. Qui abbiamo usato la matrice 3 * 3.

Produzione:

2. Matrice tridimensionale

Si chiama Array of Array Elements o An Array of Matrices. È piuttosto vivace ma una volta che hai acquisito pratica verso la logica, diventa più facile da implementare. e questa matrice 3D richiede più di tre dimensioni e richiede l'ammasso di memoria per l'archiviazione.

Può essere dichiarato come:

data_type array_name (table name) ( no. of row) ( no. of column) int L(m)(n) (p);

int L (3) (4) (2); Qui l'array L può contenere 24 elementi. E tutti questi possono essere inizializzati durante il processo di compilazione, ma quando non inizializzati vengono inseriti in un valore di immondizia.

L'inizializzazione può essere eseguita come una matrice bidimensionale. Ecco un esempio,

int L (2)(3)(4) = (((2, 2, 1, 3), (1, 6, 5, 11), (22, 11, 13, 5)), ((13, 5, 77, 8), (6, 8, 2, 4), (3, 2, 7, 8)));

Esempi di array tridimensionali

Ecco alcuni esempi di array tridimensionali che sono riportati di seguito:

Esempio 1

Di seguito viene fornito un semplice esempio nella programmazione in C che illustra la matrice tridimensionale. Viene fatto usando per un loop considerando 3 per loop per elementi 3d.

Codice:

#include
void main()
(
printf("three dimensional array!\n\n");
int i, j, k, s(2)(1)(2), siz;
siz=2*1*2;
printf("Enter %d elements: \n", siz);
for(i = 0; i < 2; ++i)
(
for (j = 0; j < 1; ++j)
(
for(k = 0; k < 2; ++k )
(
scanf("%d", &s(i)(j)(k));
)
)
)
printf("The stored values are:\n\n");
for(i = 0; i < 2; i++)
(
for (j = 0; j < 1; j++)
(
for(k = 0; k < 2; k++)
(
printf("sample(%d)(%d)(%d) = %d\n", i, j, k, s(i)(j)(k));
)
)
)
)

Produzione:

Esempio n. 2

Un altro esempio di un array 3D per stampare automaticamente gli elementi.

Codice:

#include
int main()
(
int m(2)(3)(2) =
(
( (1, 2), (3, 5), (6, 5) ),
( (8, 3), (8, 7), (9, 11) )
);
for (int i = 0; i <2; ++i)
(
for (int j = 0; j <3; ++j)
(
for (int k = 0; k <2; ++k)
printf("Value at m(%d)(%d)(%d) = %d\n", i, j, k, m(i)(j)(k));
)
)
)
return 0;
)

Produzione:

3. Matrice quadridimensionale

È un array di array tridimensionali ed è molto difficile gestire le dimensioni. È visto come un gruppo di cubi insieme e applicabile ai vettori spaziali.

Dichiarazione di matrice 4-D:

Digitare array name (1) (2) (3) (4) ……. (n) dove 1, 2 indica le dimensioni e n implica l'ennesima dimensione.

Esempio:

int state (5)(6)(7)(8);

Esempio di matrice quadridimensionale

Programma C per implementare array 4-D.

Codice:

#include
int main()
(
int i, j, k, l, s;
int d(2)(2)(2)(2);
s = 2;
d(0)(0)(0)(0) = 4;
d(0)(0)(0)(1) = 3;
d(0)(0)(1)(0) = 2;
d(0)(0)(1)(1) = 6;
d(0)(1)(0)(0) = 6;
d(0)(1)(0)(1) = 8;
d(0)(1)(1)(0) = 1;
d(0)(1)(1)(1) = 2;
d(1)(0)(0)(0) = 6;
d(1)(0)(0)(1) = 9;
d(1)(0)(1)(0) = 5;
d(1)(0)(1)(1) = 1;
d(1)(1)(0)(0) = 9;
d(1)(1)(0)(1) = 7;
d(1)(1)(1)(0) = 5;
d(1)(1)(1)(1) = 7;
for (i = 0; i < s; i++) (
for (j = 0; j < s; j++) (
for (k = 0; k < s; k++) (
for (l = 0; l < s; l++) (
printf("Value of stdio(%d)(%d)(%d)(%d): %d ", i, j, k, l, d(i)(j)(k)(l));
printf("\n");
)
)
)
)
return 0;
)

Produzione:

Conclusione

Alla fine, in questo articolo, abbiamo discusso di array multidimensionali e dei loro sottotipi nella programmazione C. E anche la loro dichiarazione e l'accesso agli elementi in un formato matrice. Queste tecniche sono applicate nel concetto come l'implementazione della ricerca binaria e l'ordinamento. Qui un indice gioca un ruolo chiave in quanto specificano un elemento nella struttura dell'array.

Articoli consigliati

Questa è una guida all'array multidimensionale in C. Qui discuteremo come inizializzare l'array multidimensionale in C insieme ad esempi. Puoi anche consultare i seguenti articoli per saperne di più-

  1. I migliori compilatori C.
  2. Matrici 2D in C #
  3. Matrici 2-D in C
  4. C Classi di archiviazione
  5. C Moltiplicazione della matrice di programmazione
  6. 3 diversi tipi di array in PHP (esempi)
  7. Come funziona l'array in Unix con la sintassi?

Categoria: