Introduzione alle matrici 2-D in C

Una matrice è un gruppo di elementi con lo stesso tipo di dati (omogeneo). Si chiama anche un tipo di dati Derivato. Se consideriamo un tipo di dati primitivo e assegniamo un valore come mostrato di seguito,

E ora, se vogliamo memorizzare un nuovo valore nella variabile a, il nuovo valore sostituisce il vecchio valore. Usando una variabile primitiva possiamo memorizzare solo un valore alla volta, non possiamo memorizzare più valori.

Per memorizzare più di un elemento in una singola variabile come voti degli studenti, ID dei dipendenti, numeri mobili con una grande quantità di dati, dobbiamo creare centinaia di variabili uniche, che è un compito molto complesso. Ecco perché è stato introdotto il concetto di array.

Concetti in array 2-D in C

Possiamo definire array in

  • Single-Dimensional
  • Doppio-Dimensional

E così via fino a N-Dimensionale in base al requisito. Ma qui ci occuperemo di array 2D. Come suggerisce il nome, gli array 2-D possono essere una rappresentazione matriciale di dati, che sono creati per implementare una struttura di dati simile a un database relazionale e possono essere memorizzati in forme tabulari. Fornisce facilità nel conservare i dati in blocco che possono essere passati a qualsiasi numero di funzioni in base al requisito. È possibile accedere ai dati in questi array tramite gli ID di riga e colonna.

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

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

Sintassi

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

Il significato della rappresentazione sopra può essere inteso come:

  1. La memoria allocata alla variabile b è del tipo di dati int.
  2. I dati vengono rappresentati sotto forma di 2 righe e 3 colonne.


È possibile accedere ai dati all'interno dell'array tramite la rappresentazione sopra. Nella rappresentazione di matrici 2D, la prima parentesi quadra rappresenta il numero di righe e la seconda è per il numero di colonne. La rappresentazione indice dell'array per il primo elemento inizia sempre con zero e termina con size-1. La variabile di matrice (qui b) contiene sempre l'indirizzo di base del blocco di memoria e viene chiamata variabile di puntatore interna.

Quindi, 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 agli indici di colonna. Per la rappresentazione sopra, per ottenere i dati della 2a riga 3a colonna, possiamo accedere con b (1) (2).

Inizializzazione di array

Abbiamo due diversi metodi per inizializzare i valori in C. I metodi differiscono solo sintatticamente.

Di seguito è uno di questi.

Un altro modo di inizializzare è il seguente:

Generalmente, si preferisce il primo metodo di inizializzazione in quanto possiamo comprendere e visualizzare chiaramente le righe e le colonne di array 2D in C.

Di seguito è riportato l'esempio per la rappresentazione pittorica degli elementi e il loro indirizzo per l'array b.

Gli elementi di un array vengono generalmente archiviati in posizioni di memoria consecutive in base al tipo di dati degli elementi.

Inserimento di elementi in array 2D

Per inserire elementi in array 2D, è necessario inserire i dati in entrambe le righe e colonne. Quindi, per questo, usiamo il concetto di loop. Nel processo sopra per l'inizializzazione dei dati in un array, 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.

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

Come osservato nel codice:

  1. Innanzitutto, dichiariamo la variabile di matrice e le dimensioni della matrice con il numero di righe e colonne.
  2. Dichiariamo quindi due variabili per iterare sugli elementi dell'array.
  3. Quindi, per i loop vengono utilizzati. Il ciclo esterno è per l'iterazione delle righe e il ciclo interno è 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 iej.

Nell'esempio sopra, abbiamo inserito i dati in una matrice con 2 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:

Aggiorna elementi in array 2D

L'aggiornamento di elementi in un array può essere fatto specificando un particolare elemento 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, capire la sua 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 2-D.

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

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

Nel programma sopra, l'elemento sulla 1a riga e 3a colonna sono selezionati 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.

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

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 ai numeri di riga e colonna.

L'output è il seguente:

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

Ora, come sappiamo, nell'array 2-D, 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?

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.

Eliminazione di elementi in array 2D

Dopo i concetti di inserimento e aggiornamento dei dati all'interno dell'array, 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 in un array 2-d possa essere compreso facilmente.

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

I passaggi seguiti sono:

  1. Ha preso i valori di un array in modo dinamico
  2. Ha chiesto all'utente di inserire il numero (indice) della riga che deve essere eliminata.
  3. Usando per l'iterazione del ciclo, stiamo confrontando se il numero di riga e il numero di input dell'utente corrispondono o meno.
  4. Se corrispondono e se il numero di riga è inferiore alla dimensione di un array, stiamo stampando la riga successiva. Altrimenti, stiamo stampando la riga così com'è.

L'output è il seguente:

Cosa succede se do 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 i numeri di riga e colonna 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 2-d ora?

Conclusione

In questa sezione, abbiamo appreso le operazioni di base sugli array bidimensionali. Questi array 2-d sono utili in tempo reale con le operazioni di matrice e molti calcoli matematici.

Le matrici possono anche essere utilizzate nella visualizzazione di calendari, posizionamenti del parcheggio e possiamo persino fare una partita a scacchi.

Molte altre strutture di dati come elenchi collegati, coda, grafici, alberi devono utilizzare questo concetto di array 2D come requisito di base per la memorizzazione e l'accesso alle posizioni di diversi elementi. Prova a risolvere le operazioni di base delle matrici 2d e divertiti a imparare C.

Articoli consigliati

Questa è una guida alle matrici 2D in C. Qui discutiamo l'introduzione, l'inizializzazione delle matrici, l'inserimento, l'aggiornamento, l'eliminazione di elementi in una matrice 2D. Puoi anche consultare i seguenti articoli per saperne di più -

  1. Matrici in R
  2. Vantaggi dell'array
  3. Matrici in C ++
  4. Matrici in JavaScript
  5. Esempi di array in C #
  6. Matrici in PHP

Categoria: