3. Arreglos

#estructuraDeDatos #universidad

a. Características de los arreglos unidimensionales

Un arreglo unidimensional es una colección de elementos del mismo tipo, almacenados en ubicaciones de memoria contiguas. Se accede a los elementos mediante índices.

Características:

Ejemplo:

int numeros[5] = {10, 20, 30, 40, 50};

// Acceder al tercer elemento
printf("El tercer número es: %d\n", numeros[2]); // Imprime 30

b. Arreglos de cadenas de caracteres

Las cadenas de caracteres en muchos lenguajes, como C, son implementadas como arreglos de caracteres terminados con un carácter nulo \0.

Características:

Ejemplo:

char saludo[] = "Hola, Mundo!";

// Acceder al primer carácter
printf("Primer carácter: %c\n", saludo[0]); // Imprime 'H'

// Imprimir la cadena completa
printf("Saludo completo: %s\n", saludo); // Imprime "Hola, Mundo!"

c. Características de los arreglos bidimensionales

Un arreglo bidimensional es una matriz que puede ser visualizada como una tabla de filas y columnas.

Características:

Ejemplo:

int matriz[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

// Acceder al elemento de la segunda fila, tercera columna
printf("Elemento: %d\n", matriz[1][2]); // Imprime 7

d. Arreglos multidimensionales

Los arreglos multidimensionales tienen más de dos dimensiones y se utilizan para representar estructuras más complejas, como cubos, hipercubos, etc.

Características:

Ejemplo:

// Arreglo tridimensional
int cubo[2][3][4];

// Asignación de un valor
cubo[1][2][3] = 25;

// Acceso al valor
printf("Valor en cubo[1][2][3]: %d\n", cubo[1][2][3]); // Imprime 25

Ejemplos Prácticos

Ejemplo 5: Suma de elementos en un arreglo unidimensional

#include <stdio.h>

int main() {
    int numeros[5] = {2, 4, 6, 8, 10};
    int suma = 0;

    for(int i = 0; i < 5; i++) {
        suma += numeros[i];
    }

    printf("La suma es: %d\n", suma); // Imprime 30
    return 0;
}

Ejemplo 6: Transposición de una matriz bidimensional

#include <stdio.h>

#define FILAS 2
#define COLUMNAS 3

int main() {
    int matriz[FILAS][COLUMNAS] = {
        {1, 2, 3},
        {4, 5, 6}
    };
    int transpuesta[COLUMNAS][FILAS];

    // Calcular la transpuesta
    for(int i = 0; i < FILAS; i++) {
        for(int j = 0; j < COLUMNAS; j++) {
            transpuesta[j][i] = matriz[i][j];
        }
    }

    // Imprimir la matriz transpuesta
    printf("Matriz Transpuesta:\n");
    for(int i = 0; i < COLUMNAS; i++) {
        for(int j = 0; j < FILAS; j++) {
            printf("%d ", transpuesta[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Salida:

Matriz Transpuesta:
1 4 
2 5 
3 6 

Ejercicios

  1. Arreglo unidimensional:

    • Crea un programa que lea n números enteros desde el usuario, los almacene en un arreglo y luego encuentre y muestre el número más grande y el más pequeño.
  2. Arreglo de cadenas:

    • Implementa un programa que almacene una lista de 5 nombres de estudiantes en un arreglo de cadenas y luego los imprima en orden inverso.
  3. Matriz bidimensional:

    • Escribe una función que reciba una matriz de 3x3 y determine si es una matriz identidad (es decir, tiene 1s en la diagonal principal y 0s en el resto).
  4. Arreglos multidimensionales:

    • Crea un programa que maneje un arreglo tridimensional que represente un tablero de 2 juegos de 3x3 (como dos tableros de Tic-Tac-Toe). Permite al usuario ingresar los movimientos para cada tablero y muestra el estado final de ambos.