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, o qualsevol estructura de dades que requereixi més d'una dimensió.
Conceptes Clau
- Definició d'Arrays Multidimensionals: Un array multidimensional és essencialment un array d'arrays. Per exemple, un array bidimensional es pot veure com una matriu de files i columnes.
- Declaració i Inicialització: La sintaxi per declarar i inicialitzar arrays multidimensionals.
- Accés als Elements: Com accedir i modificar els elements d'un array multidimensional.
- Iteració: Com utilitzar bucles per recórrer arrays multidimensionals.
Declaració i Inicialització
Arrays Bidimensionals
Un array bidimensional es declara especificant el nombre de files i columnes. Per exemple:
També es poden inicialitzar en el moment de la declaració:
Arrays Tridimensionals
Els arrays tridimensionals es declaren de manera similar, especificant el nombre de "capas", files i columnes:
També es poden inicialitzar:
int cub[2][3][4] = { { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } };
Accés als Elements
Per accedir a un element d'un array multidimensional, es fa servir la notació d'índexs múltiples. Per exemple, per accedir a l'element de la segona fila i tercera columna d'una matriu:
Per modificar un element:
Iteració
Per recórrer un array multidimensional, es poden utilitzar bucles aniuats. Per exemple, per recórrer una matriu bidimensional:
for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { cout << matriu[i][j] << " "; } cout << endl; }
Exemple Pràctic
A continuació, es mostra un exemple complet que declara, inicialitza, accedeix i recorre un array bidimensional:
#include <iostream> using namespace std; int main() { // Declaració i inicialització int matriu[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; // Accés i modificació matriu[1][2] = 42; // Iteració i impressió for (int i = 0; i < 3; ++i) { for (int j = 0; j < 4; ++j) { cout << matriu[i][j] << " "; } cout << endl; } return 0; }
Exercicis Pràctics
-
Exercici 1: Declara un array tridimensional de dimensions 2x2x2 i inicialitza'l amb valors de la teva elecció. Imprimeix tots els elements de l'array.
-
Exercici 2: Escriu un programa que llegeixi una matriu de 3x3 d'entrada de l'usuari i calculi la suma de tots els elements.
Solucions
Solució Exercici 1:
#include <iostream> using namespace std; int main() { int cub[2][2][2] = { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } }; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 2; ++j) { for (int k = 0; k < 2; ++k) { cout << cub[i][j][k] << " "; } cout << endl; } cout << endl; } return 0; }
Solució Exercici 2:
#include <iostream> using namespace std; int main() { int matriu[3][3]; int suma = 0; cout << "Introdueix els elements de la matriu 3x3:" << endl; for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { cin >> matriu[i][j]; suma += matriu[i][j]; } } cout << "La suma de tots els elements és: " << suma << endl; return 0; }
Conclusió
Els arrays multidimensionals són una eina poderosa per emmagatzemar i gestionar dades en múltiples dimensions. Comprendre com declarar, inicialitzar, accedir i recórrer aquests arrays és fonamental per treballar amb estructures de dades més complexes en C++. Amb la pràctica, aquests conceptes esdevindran una part natural del teu repertori de programació.
Curs de Programació en C++
Mòdul 1: Introducció al C++
- Introducció al C++
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Entrada i Sortida
Mòdul 2: Estructures de Control
Mòdul 3: Funcions
- Introducció a les Funcions
- Paràmetres de Funció i Tipus de Retorn
- Sobrecàrrega de Funcions
- Recursivitat
Mòdul 4: Arrays i Strings
Mòdul 5: Punteres i Referències
- Introducció als Punteres
- Aritmètica de Punteres
- Punteres i Arrays
- Referències
- Assignació Dinàmica de Memòria
Mòdul 6: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació i Abstracció
Mòdul 7: Temes Avançats
- Plantilles
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Biblioteca de Plantilles Estàndard (STL)
- Expressions Lambda
- Multifil