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

  1. 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.
  2. 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
      
  3. 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}
      };
      
  4. 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

  1. 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
      
  2. 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
      };
      
  3. 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

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

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

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats