Introduzione.

Molto spesso, quando si lavora con qualsiasi informazione, si ha a che fare con dati tabulari. I programmi moderni lavorano molto spesso con tali dati. L'esempio più semplice è la programmazione di giochi su una scacchiera: tris, scacchi, dama, ecc.

In matematica, tali strutture sono chiamate matrici.

 
Matrix è una tabella rettangolare composta da elementi dello stesso tipo (numeri, stringhe, ecc.).< /span>

Tali dati in C# possono essere archiviati ed elaborati come array bidimensionali - "array di array"
Per elaborare i dati nella tabella, è necessario ricordare lo stato di ogni cella (cella). Ogni cella ha due numeri: un numero di riga e un numero di colonna.
Nella matrice ogni elemento ha due indici: prima viene indicato il numero di riga, poi il numero di colonna. La numerazione delle righe e delle colonne parte da zero.
Ad esempio, l'elemento A[1, 2] è l'elemento che si trova nella seconda riga e nella terza colonna.

Proprio come con gli array regolari, per lavorare con le matrici, devi imparare a crearle, inserire, elaborare e visualizzare.

Crea una matrice.

È possibile creare una matrice in memoria di una data dimensione riempita con alcuni valori iniziali.

int[,] array = new int[4, 2]; // 4 righe, 2 colonne

 

Dopo aver creato una matrice, puoi riempirla con valori arbitrari. Poiché ogni elemento ha due indici, è necessario utilizzare cicli annidati

for (int i=1; i <= N, i++) { / / N - numero di righe
    for (int j=1; j <= N, j++) { // M è il numero di colonne
        A[i, j] = ...
  }
}
Visualizzazione della matrice.

Di solito vengono utilizzati due loop nidificati per elaborare e visualizzare l'elenco. Il primo loop è sul numero di riga, il secondo loop sugli elementi all'interno della riga.  Per visualizzare la matrice sullo schermo riga per riga, separando i numeri con spazi all'interno di una riga, è necessario scrivere il seguente frammento:
 
for (int i=1; i <= N, i++) {
    for (int j=1; j <= N, j++) {
        Console. Write(A[i, j] + " ");
  }
  Console.WriteLine(); // passa a una nuova riga
}
   

Puoi fare lo stesso, ma usa i loop di elenco invece dell'indice ( foreach). Prova a scrivere tu stesso una subroutine che lo implementi.

Riempimento di una matrice con valori dalla tastiera.

Lascia che il programma riceva un array bidimensionale come input, nella forma < em>n stringhe, ciascuna contenente m numeri separati da spazi. Come contarli? Ad esempio, in questo modo:

int[,] array = new int[n,m]; // crea un array da popolare
for (int i = 0; i <  n; i++)
{
       stringa A = Console.ReadLine(); // linea di lettura
       int[] curr = A.Split(' ').Select(int.Parse).ToArray(); // converte questa stringa in un array unidimensionale curr
       for (int j = 0; j < m; j++)
       {
           array[i, j] = curr[j]; // riempiamo la stringa dell'array di cui abbiamo bisogno con i valori dell'array curr
       }
}

 

Ogni elemento della matrice ha due indici, quindi è necessario utilizzare un ciclo nidificato per scorrere tutti gli elementi.
Di solito una matrice viene iterata riga per riga: il ciclo esterno itera sugli indici di riga, mentre il ciclo interno itera sugli indici di colonna.
Ma se necessario, puoi iterare sulla matrice e per colonne, quindi i cicli vengono invertiti.