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