#include <stdio.h>
#define SIZE 10
void imprimirMatriz(int matriz[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
printf("%d ", matriz[i][j]);
}
printf("\n");
}
}
void sumarMatrices(int A[SIZE][SIZE], int B[SIZE][SIZE], int resultado[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
resultado[i][j] = A[i][j] + B[i][j];
}
}
}
void restarMatrices(int A[SIZE][SIZE], int B[SIZE][SIZE], int resultado[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
resultado[i][j] = A[i][j] - B[i][j];
}
}
}
void multiplicarMatrices(int A[SIZE][SIZE], int B[SIZE][SIZE], int resultado[SIZE][SIZE]) {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
resultado[i][j] = 0;
for (int k = 0; k < SIZE; k++) {
resultado[i][j] += A[i][k] * B[k][j];
}
}
}
}
// Función para calcular la inversa de una matriz (solo para matrices 2x2 en este ejemplo)
int inversaMatriz(int A[SIZE][SIZE], float inversa[SIZE][SIZE]) {
// Solo para matrices 2x2 como ejemplo
if (SIZE != 2) return 0; // Solo para matrices 2x2
float det = A[0][0] * A[1][1] - A[0][1] * A[1][0];
if (det == 0) return 0; // No tiene inversa
inversa[0][0] = A[1][1] / det;
inversa[0][1] = -A[0][1] / det;
inversa[1][0] = -A[1][0] / det;
inversa[1][1] = A[0][0] / det;
return 1; // Inversa calculada
}
int main() {
int A[SIZE][SIZE], B[SIZE][SIZE], suma[SIZE][SIZE], resta[SIZE][SIZE], multiplicacion[SIZE][SIZE];
float inversa[SIZE][SIZE];
// Inicializar matrices A y B con valores de ejemplo
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
A[i][j] = i + j; // Ejemplo de inicialización
B[i][j] = i - j; // Ejemplo de inicialización
}
}
printf("Matriz A:\n");
imprimirMatriz(A);
printf("Matriz B:\n");
imprimirMatriz(B);
sumarMatrices(A, B, suma);
printf("Suma de A y B:\n");
imprimirMatriz(suma);
restarMatrices(A, B, resta);
printf("Resta de A y B:\n");
imprimirMatriz(resta);
multiplicarMatrices(A, B, multiplicacion);
printf("Multiplicación de A y B:\n");
imprimirMatriz(multiplicacion);
if (inversaMatriz(A, inversa)) {
printf("Inversa de A:\n");
imprimirMatriz((int (*)[SIZE])inversa); // Casting para imprimir
} else {
printf("La matriz A no tiene inversa.\n");
}
return 0;
}