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. span >
È 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 em> 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.
|