Ejercicios de Programación en C: Manipulación de Vectores y Matrices

Ejercicios Prácticos de Programación en C: Vectores y Matrices

Cuestión 1: Inversión de un Vector de Enteros

Enunciado: Dado un vector de enteros de dimensión 5, cree otro que contenga los elementos invertidos del primero.

#include <stdio.h>

int main() {
    int vector[5];
    int i;
    for (i = 0; i < 5; i++) {
        printf("Deme un elemento del vector: ");
        scanf("%d", &vector[i]);
    }
    printf("El vector introducido es: ");
    for (i = 0; i < 5; i++) {
        printf("%d\t", vector[i]);
    }
    printf("\nEl nuevo vector invertido será: ");
    for (i = 4; i > -1; i--) {
        printf("%d\t", vector[i]);
    }
    return 0;
}

Cuestión 2: Rotación de Elementos a la Derecha

Enunciado: Dado un vector de enteros con dimensión máxima de 10 elementos, realice una rotación de sus elementos a la derecha.

#include <stdio.h>

int main() {
    int vector[10], vector_rotado[10];
    int i, k;
    for (i = 0; i < 10; i++) {
        printf("Deme un elemento del vector: ");
        scanf("%d", &vector[i]);
    }
    printf("El vector introducido es: ");
    for (i = 0; i < 10; i++) {
        printf("%d", vector[i]);
    }
    printf("\nIndique el número de componentes a rotar: ");
    scanf("%d", &k);
    k = k % 10;
    for (i = 0; i < 10; i++) {
        vector_rotado[(i + k) % 10] = vector[i];
    }
    printf("\nEl nuevo vector rotado será: ");
    for (i = 0; i < 10; i++) {
        printf("%d", vector_rotado[i]);
    }
    return 0;
}

Cuestión 3: Producto Escalar de Dos Vectores

Enunciado: Codificar un programa en C que calcule el producto de dos vectores de tamaño como máximo 100 elementos.

#include <stdio.h>

int main() {
    int vector1[100], vector2[100];
    int i, n, producto, suma = 0;
    printf("Indique número de componentes de ambos vectores: ");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        printf("Deme un elemento del vector 1: ");
        scanf("%d", &vector1[i]);
    }
    printf("El vector introducido es: ");
    for (i = 0; i < n; i++) {
        printf("%d", vector1[i]);
    }
    for (i = 0; i < n; i++) {
        printf("Deme un elemento del vector 2: ");
        scanf("%d", &vector2[i]);
    }
    printf("El vector introducido es: ");
    for (i = 0; i < n; i++) {
        printf("%d", vector2[i]);
    }
    for (i = 0; i < n; i++) {
        producto = vector1[i] * vector2[i];
        suma += producto;
    }
    printf("\nEl producto escalar de los vectores es: %d\n", suma);
    return 0;
}

Cuestión 4: Eliminación de un Elemento en una Posición Específica

Enunciado: Dado un vector de enteros, permita eliminar un elemento en una posición específica.

#include <stdio.h>

int main() {
    int vector[100];
    int i, n, k;
    printf("Indique número de componentes del vector: ");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        printf("\nDeme un elemento del vector: ");
        scanf("%d", &vector[i]);
    }
    printf("\nEl vector introducido es: ");
    for (i = 0; i < n; i++) {
        printf("%d ", vector[i]);
    }
    printf("\nEscriba la posición que quiere eliminar (de 0 a %d): ", n - 1);
    scanf("%d", &k);
    for (i = k; i < n - 1; i++) {
        vector[i] = vector[i + 1];
    }
    n--;
    printf("\nEl nuevo vector queda: ");
    for (i = 0; i < n; i++) {
        printf("%d ", vector[i]);
    }
    return 0;
}

Cuestión 5: Multiplicación de Matrices con Validación de Dimensiones

Enunciado: Programa que multiplique dos matrices de números enteros. El programa debe comprobar las dimensiones para que la multiplicación se pueda llevar a cabo.

#include <stdio.h>

int main() {
    int matrizA[100][100], matrizB[100][100], matrizC[100][100];
    int i, j, k, filA, filB, colA, colB;
    printf("Indique número de filas y columnas de la matriz A: ");
    scanf("%d %d", &filA, &colA);
    printf("Indique número de filas y columnas de la matriz B: ");
    scanf("%d %d", &filB, &colB);
    if (colA != filB) {
        printf("\nNo se pueden multiplicar las matrices\n");
        return 0;
    }
    printf("Introduzca los elementos de la matriz A: ");
    for (i = 0; i < filA; i++) {
        for (j = 0; j < colA; j++) {
            printf("Deme un elemento: ");
            scanf("%d", &matrizA[i][j]);
        }
    }
    printf("Introduzca los elementos de la matriz B: ");
    for (i = 0; i < filB; i++) {
        for (j = 0; j < colB; j++) {
            printf("Deme un elemento: ");
            scanf("%d", &matrizB[i][j]);
        }
    }
    for (i = 0; i < filA; i++) {
        for (j = 0; j < colB; j++) {
            matrizC[i][j] = 0;
            for (k = 0; k < colA; k++) {
                matrizC[i][j] = matrizC[i][j] + matrizA[i][k] * matrizB[k][j];
            }
        }
    }
    printf("\nEl producto de ambas matrices queda: \n ");
    for (i = 0; i < filA; i++) {
        for (j = 0; j < colB; j++) {
            printf("%d\t", matrizC[i][j]);
        }
        printf("\n");
    }
    return 0;
}

Cuestión 6: Suma de Filas y Columnas en una Matriz

Enunciado: Dada una matriz de tamaño como máximo 10×10, cree dos vectores: uno que contenga la suma de las componentes de cada fila de la matriz y otro que contenga la suma de las columnas.

#include <stdio.h>

int main() {
    int A[10][10];
    int suma_filas[10], suma_columnas[10];
    int i, j, f, c;
    printf("Indique número de filas: ");
    scanf("%d", &f);
    printf("Indique número de columnas: ");
    scanf("%d", &c);
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            printf("\nIntroduzca elemento A[%d][%d]: ", i, j);
            scanf("%d", &A[i][j]);
        }
    }
    for (i = 0; i < f; i++) {
        suma_filas[i] = 0;
        for (j = 0; j < c; j++) {
            suma_filas[i] = suma_filas[i] + A[i][j];
        }
    }
    for (j = 0; j < c; j++) {
        suma_columnas[j] = 0;
        for (i = 0; i < f; i++) {
            suma_columnas[j] = suma_columnas[j] + A[i][j];
        }
    }
    printf("\nVector suma de filas: ");
    for (i = 0; i < f; i++) {
        printf("%d ", suma_filas[i]);
    }
    printf("\nVector suma de columnas: ");
    for (j = 0; j < c; j++) {
        printf("%d ", suma_columnas[j]);
    }
    return 0;
}

Cuestión 7: Búsqueda de un Valor en la Matriz

Enunciado: Realizar un programa en C que, dada una matriz de números enteros de tamaño como máximo 10×10, busque en ella un valor determinado. Si lo encuentra, debe mostrar su posición (fila y columna).

#include <stdio.h>

int main() {
    int A[10][10];
    int f, c;
    int i, j;
    int numero;
    int encontrado = 0;
    printf("Indique número de filas: ");
    scanf("%d", &f);
    printf("Indique número de columnas: ");
    scanf("%d", &c);
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            printf("Introduzca elemento A[%d][%d]: ", i, j);
            scanf("%d", &A[i][j]);
        }
    }
    printf("Introduzca el número a buscar: ");
    scanf("%d", &numero);
    for (i = 0; i < f; i++) {
        for (j = 0; j < c; j++) {
            if (A[i][j] == numero) {
                printf("El número %d se encuentra en la posición (%d, %d) \n", numero, i, j);
                encontrado = 1;
            }
        }
    }
    if (encontrado == 0) {
        printf("El número %d no se encuentra en la matriz\n", numero);
    }
    return 0;
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.