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;
} 