#include <stdio.h> #include <stdlib.h> int ** IntroduceMatriz (int *, int *); void SumaFilas (int **, int, int); void MultiplicaColumnas (int **, int, int); void RotaMatrizDerecha (int **, int, int); void MostrarMatriz (int **, int, int); int main () { int **matriz, f ,c; int i; matriz = IntroduceMatriz(&f, &c); MostrarMatriz(matriz,f,c); SumaFilas(matriz,f,c); MultiplicaColumnas(matriz,f,c); RotaMatrizDerecha(matriz,f,c); MostrarMatriz(matriz,f,c); for (i=0; i<f ; i++) { free(matriz[i]); } free(matriz); return EXIT_SUCCESS; } int ** IntroduceMatriz (int *f, int *c) { int **matriz; int i, j; printf ("Indique numero de filas: \n"); scanf ("%d",f); fflush (stdin); // Limpiar el buffer de entrada printf ("Indique numero de columnas: \n"); scanf ("%d",c); fflush (stdin); matriz = (int **) calloc (*f,sizeof(int*)); for (i=0 ; i<*f ; i++) { matriz[i] = (int*) calloc (*c,sizeof(int)); } for (i=0 ; i<*f ; i++) { for (j=0 ; j<*c ; j++) { printf ("\nIntroduzca posición %d - %d: ",i,j); scanf("%d",&matriz[i][j]); fflush(stdin); } } return matriz; } void MostrarMatriz (int **matriz, int f, int c) { int i,j; for (i=0 ; i<f ; i++) { for (j=0 ; j<c ; j++) { printf ("%d ",matriz[i][j]); } printf ("\n"); } } void SumaFilas (int **matriz, int f, int c) { int i,j,suma; for (i=0 ; i<f ; i++) { suma = 0; for (j=0 ; j<c ; j++) { suma += matriz[i][j]; } printf ("La fila %d suma: %d \n",f,suma); } } void MultiplicaColumnas (int **matriz, int f, int c) { int i,j, multiplica; for (j=0 ; j<c ; j++) { multiplica = 1; for (i=0 ; i<f ; i++) { multiplica *= matriz[i][j]; } printf ("La columna %d da: %d \n",j,multiplica); } } void RotaMatrizDerecha (int **matriz, int f, int c) { int i,j; int **matrizt; matrizt = (int**) calloc (f,sizeof(int*)); for (i=0; i<f ; i++) { matrizt[i] = (int*) calloc (c,sizeof(int)); } for (i=0 ; i<f ; i++) { for (j=0 ; j<c ; j++) { if (j == c-1) { matrizt[i][0] = matriz[i][j]; } else { matrizt[i][j+1] = matriz[i][j]; } } } for (i=0 ; i<f ; i++) { for (j=0 ; j<c ; j++) { matriz[i][j] = matrizt[i][j]; } } }
miércoles, 8 de abril de 2020
Matrices dinámicas en C
A continuación un ejercicio, similar a otros que he publicado, pero ésta vez con Matrices de dimensiones dinámicas.
Etiquetas:
C,
matrices,
multiplicarcolumnas,
punteros,
rotarmatriz,
sumarfilar
Ubicación:
Majadahonda, Madrid, Spain