Els arrays multidimensionals són una extensió dels arrays unidimensionals que permeten emmagatzemar dades en més d'una dimensió. En C, els arrays multidimensionals es poden utilitzar per representar matrius, taules i altres estructures de dades complexes.
Conceptes Clau
-
Definició d'Arrays Multidimensionals:
- Un array multidimensional és essencialment un array d'arrays.
- La forma més comuna és l'array bidimensional, que es pot imaginar com una taula amb files i columnes.
-
Declaració d'Arrays Multidimensionals:
- La sintaxi per declarar un array bidimensional és:
tipus nom_array[files][columnes];
- Exemple:
int matriu[3][4]; // Un array de 3 files i 4 columnes
- La sintaxi per declarar un array bidimensional és:
-
Inicialització d'Arrays Multidimensionals:
- Els arrays multidimensionals es poden inicialitzar en el moment de la seva declaració.
- Exemple:
int matriu[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
-
Accés als Elements:
- Els elements d'un array multidimensional es poden accedir utilitzant dos índexs: un per la fila i un per la columna.
- Exemple:
int valor = matriu[1][2]; // Accedeix a l'element de la segona fila i tercera columna
Exemples Pràctics
Exemple 1: Declaració i Inicialització
#include <stdio.h> int main() { // Declaració i inicialització d'un array bidimensional int matriu[2][3] = { {1, 2, 3}, {4, 5, 6} }; // Imprimir els elements de l'array for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { printf("%d ", matriu[i][j]); } printf("\n"); } return 0; }
Exemple 2: Suma de Matrius
#include <stdio.h> int main() { int matriu1[2][2] = { {1, 2}, {3, 4} }; int matriu2[2][2] = { {5, 6}, {7, 8} }; int suma[2][2]; // Sumar les dues matrius for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { suma[i][j] = matriu1[i][j] + matriu2[i][j]; } } // Imprimir la matriu resultant for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { printf("%d ", suma[i][j]); } printf("\n"); } return 0; }
Exercicis Pràctics
Exercici 1: Multiplicació de Matrius
Escriu un programa en C que multipliqui dues matrius de 2x2 i imprimeixi la matriu resultant.
Solució
#include <stdio.h> int main() { int matriu1[2][2] = { {1, 2}, {3, 4} }; int matriu2[2][2] = { {5, 6}, {7, 8} }; int producte[2][2] = {0}; // Multiplicar les dues matrius for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { for (int k = 0; k < 2; k++) { producte[i][j] += matriu1[i][k] * matriu2[k][j]; } } } // Imprimir la matriu resultant for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { printf("%d ", producte[i][j]); } printf("\n"); } return 0; }
Exercici 2: Transposició d'una Matriu
Escriu un programa en C que transposi una matriu de 3x3.
Solució
#include <stdio.h> int main() { int matriu[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int transposada[3][3]; // Transposar la matriu for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { transposada[j][i] = matriu[i][j]; } } // Imprimir la matriu transposada for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("%d ", transposada[i][j]); } printf("\n"); } return 0; }
Errors Comuns i Consells
-
Desbordament d'Índex:
- Assegura't que els índexs utilitzats per accedir als elements de l'array estan dins dels límits definits.
- Exemple d'error:
int valor = matriu[3][4]; // Error si matriu és de 3x4
-
Inicialització Incorrecta:
- Quan inicialitzis un array multidimensional, assegura't que el nombre d'elements en cada fila és consistent amb la declaració.
- Exemple d'error:
int matriu[2][3] = { {1, 2, 3}, {4, 5} // Error: falta un element };
-
Comprensió de la Memòria:
- Recorda que els arrays multidimensionals en C es guarden en memòria de manera contigua. Això pot afectar el rendiment en operacions intensives de memòria.
Conclusió
Els arrays multidimensionals són una eina poderosa per gestionar dades estructurades en múltiples dimensions. Comprendre com declarar, inicialitzar i accedir a aquests arrays és fonamental per a la programació en C. Amb la pràctica, podràs utilitzar arrays multidimensionals per resoldre problemes complexos de manera eficient.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat