#include <stdio.h>; #include <stdlib.h>; void Ingresa_Matriz (int m[3][3], int f, int c); void Utiliza_Matriz (int m[3][3], int f, int c); void Visualiza_Matriz (int m[3][3], int f, int c); void Rota_Matriz_D (int m[3][3], int f, int c); void Rota_Matriz_I (int m[3][3], int f, int c); void Multiplica_Matriz (int m[3][3], int f, int c, int cf, int *m0, int *m1, int *m2); int main () { char ingresa; int m[3][3], cf = 0, direccion = 0, f = 0, c = 0; int m0, m1, m2; printf ("Deseas ingresar Matriz o utiliza la maqueta <I/M>: "); scanf ("%c",&ingresa); if (ingresa == 'i') { Ingresa_Matriz(m, f, c); } else { Utiliza_Matriz(m, f, c); } Visualiza_Matriz(m, f, c); printf ("\nDeseas rotar la matriz a la derecha <1> o a la izquierda <0>: "); scanf ("%d",&direccion); if (direccion == 1) { Rota_Matriz_D (m, f, c); } else { Rota_Matriz_I (m, f, c); } Visualiza_Matriz(m, f, c); printf ("\n¿Quieres multiplicar las filas (1) o las columnas (0)?: "); scanf ("%d",&cf); Multiplica_Matriz(m, f, c, cf, &m0, &m1, &m2); if (cf == 1) { printf ("\nMultiplicacion Fila 0: %d",m0); printf ("\nMultiplicacion Fila 1: %d",m1); printf ("\nMultiplicacion Fila 2: %d",m2); } else { printf ("\nMultiplicacion Columna 0: %d",m0); printf ("\nMultiplicacion Columna 1: %d",m1); printf ("\nMultiplicacion Columna 2: %d",m2); } return 0; } void Ingresa_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { printf ("\nIntroduce posicion [%d][%d]: ",f,c); scanf ("%d",&m[f][c]); } } } void Utiliza_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=rand()%50+1; } } } void Visualiza_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { printf ("[%d] ",m[f][c]); } printf ("\n"); } } void Rota_Matriz_D (int m[3][3], int f, int c) { int tmp[3][3]; for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 2) { tmp[f][0]=m[f][c]; } else { tmp[f][c+1]=m[f][c]; } } } for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=tmp[f][c]; } } } void Rota_Matriz_I (int m[3][3], int f, int c) { int tmp[3][3]; for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 0) { tmp[f][2]=m[f][c]; } else { tmp[f][c-1]=m[f][c]; } } } for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=tmp[f][c]; } } } void Multiplica_Matriz (int m[3][3], int f, int c, int cf, int *m0, int *m1, int *m2) { // 1 Multiplica filas // 0 Multiplica columnas int c0[3], c1[3], c2[3]; if (cf == 0) { printf ("\nMultiplicando columnas...\n\n"); for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 0) c0[f]=m[f][c]; if (c == 1) c1[f]=m[f][c]; if (c == 2) c2[f]=m[f][c]; } } } else { printf ("\nMultiplicando filas...\n\n"); for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (f == 0) c0[c]=m[f][c]; if (f == 1) c1[c]=m[f][c]; if (f == 2) c2[c]=m[f][c]; } } } *m0=c0[0]*c0[1]*c0[2]; *m1=c1[0]*c1[1]*c1[2]; *m2=c2[0]*c2[1]*c2[2]; }
lunes, 3 de junio de 2019
Ejemplo completo de Matrices en C
A continuación, os pongo el ejemplo que se me ha ocurrido más completo sobre gestión de Matrices en C que reúne los ejemplos que he ido poniendo anteriormente.