Realizar un programa que solicite una matriz A y una matriz B por teclado y almacene sus valores, teniendo en cuenta que las matrices han de ser de 3×4. El programa ha de utilizar funciones para realizar la captura de datos de las dos matrices, así como posteriormente presentar el resultado de la suma, resta y traspuestas de las matrices, utilizando para todo ello funciones también.



La resolución del ejercicio seria la siguiente:

#include <stdio.h>
#include <stdlib.h>
#define filas 3
#define columnas 4
// Predefinición de funciones
void SoliciteArray(int [][columnas]);
void VisualArray(int [][columnas]);
void Sum(int [][columnas],int [][columnas]);
void Res(int [][columnas],int [][columnas]);
void Tras(int [][columnas]);
int main()
{
    int MatrizA[filas][columnas];
    int MatrizB[filas][columnas];
    // Peticion de datos para la matriz a
    printf("Solicitando datos para la primera matriz");
    SoliciteArray(MatrizA);
    // Peticion de datos para la matriz b
    printf("Solicitando datos para la segunda matriz");
    SoliciteArray(MatrizB);
    // Visualizar los datos de la matriz a
    VisualArray(MatrizA);
    // Visualizar los datos de la matriz b
    VisualArray(MatrizB);
    // Sumar matrices
    printf("\nLa suma de las matrices es la siguiente:\n");
    Sum(MatrizA,MatrizB);
    // Restar matrices
    printf("\nLa resta de las matrices es la siguiente:\n");
    Res(MatrizA,MatrizB);
    // Traspuestas
    printf("\nTraspuesta de la matriz a\n");
    Tras(MatrizA);
    printf("\nTraspuesta de la matriz b\n");
    Tras(MatrizB);
    return 0;
}
// Funcion para solicitar los datos del array
void SoliciteArray(int Matriz[][columnas]) {
    int fila;
    int columna;
    printf("\n");
    for(fila=0;fila<filas;fila++) {
        for(columna=0;columna<columnas;columna++) {
            printf("Posicion %d - %d :",fila,columna);
            scanf(" %d",&Matriz[fila][columna]);
        }
    }
    printf("\n");
}
// Funcion para visualizar los datos de la matriz
void VisualArray(int Matriz[][columnas]) {
    int fila;
    int columna;
    printf("\n");
    for(fila=0;fila<filas;fila++) {
        for(columna=0;columna<columnas;columna++) {
            printf("%5d",Matriz[fila][columna]);
        }
        printf("\n");
    }
}
// Funcion para sumar matrices
void Sum(int Matriz1[][columnas],int Matriz2[][columnas]) {
    int fila;
    int columna;
    int resultado[filas][columnas];
    for(fila=0;fila<filas;fila++) {
        for(columna=0;columna<columnas;columna++) {
            resultado[fila][columna]=Matriz1[fila][columna]+Matriz2[fila][columna];
        }
    }
    // Visualizar matriz de resultado
    VisualArray(resultado);
}
// Funcion para restar matrices
void Res(int Matriz1[][columnas],int Matriz2[][columnas]) {
    int fila;
    int columna;
    int resultado[filas][columnas];
    for(fila=0;fila<filas;fila++) {
        for(columna=0;columna<columnas;columna++) {
            resultado[fila][columna]=Matriz1[fila][columna]-Matriz2[fila][columna];
        }
    }
    // Visualizar matriz de resultado
    VisualArray(resultado);
}
void Tras(int Matriz[][columnas]) {
    int fila;
    int columna;
    printf("\nVisualizar la matriz normal\n");
    VisualArray(Matriz);
    printf("\nVisualizar la traspuesta de la matriz\n");
    for(fila=0;fila<columnas;fila++) {
        for(columna=0;columna<filas;columna++) {
            printf("%5d",Matriz[columna][fila]);
        }
        printf("\n");
    }
}