viernes, 25 de enero de 2019

Ejercicios resueltos Matrices en C

He recopilado una serie de ejercicios sobre trabajo de matrices en C que espero sean de utilizar, no tenéis más que contactar en caso de dudas.

Ejercicio 1: Escribe un programa que pida cinco enteros al usuario y los almacene en una matriz. Calcula si la suma de los números almacenados es par o impar.



#include <stdio.h>


int main () {
    int m[5];
    int i, suma=0;
    
    for (i=0;i<5;i++) {
        printf ("Introduce numero [%i]: ",i+1);
        scanf ("%i",&m[i]);
    }
    
    for (i=0;i<5;i++) {
        suma+=m[i];
    }
    
    if (suma%2==0) {
        printf ("\nLa suma es PAR: %i",suma);
    } else {
        printf ("\nLa suma es IMPAR: %i",suma);
    }
    return 0;
}


Ejercicio 2: Escribe un programa que pida nueve números enteros y los almacene en una matriz 3x3. Calcula la suma de los números de cada fila y mostrar por pantalla el número de fila con mayor suma.



#include <stdio.h>

int main () {
    int m[3][3];
    int f,c, sumafila=0, nfila=0, mayorfila=0;
    
    for (f=0;f<3;f++) {
        for (c=0;c<3;c++) {
            printf ("Introduce el valor de [%i][%i]",f,c);
            scanf ("%i",&m[f][c]);
        } printf ("\n## Fila [%i] completada\n",f+1);
    }
    
    for (f=0;f<3;f++) {
        sumafila=0;
        nfila=f+1;
        for (c=0;c<3;c++) {
            sumafila+=m[f][c];
            if (sumafila > mayorfila) {
                mayorfila=sumafila;
            }
        }
    }
    
    printf ("\n-----------\n");
    printf ("La fila con suma mayor es: %i con resultado %i",nfila,mayorfila);
    
    return 0;
}


Ejercicio 3: Escribe un programa, que trabajando mediante funciones, presente un menú al usuario, rote la columnas a la derecha y suma filas.




  


#include <stdio.h>  
#define DIMENSION 3  
  
int m[3][3]={10,20,30,40,50,60,70,80,90};  
int n[3][3];  
int a,b,f,c, opcion, suma, resultado;  
  
int IntroduceMatriz (int m[3][3], int f, int c);  
int VisualizaMatriz (int m[3][3], int f, int c);  
int RotarMatrizDrcha (int m[3][3], int f, int c);  
int CambiarFilasColumnas (int m[3][3], int f, int c);  
int SumarFilasColumnas (int m[3][3], int f, int c);  
  
  
//struct ciudadano * CargarBBDDCiudadanos (struct *ciudadano, char *, char *, char *);  
  
  
int main () {  
      
  
    do {  
        printf ("--- MENU ---\n");  
        printf ("1. Introducir Matriz\n");  
        printf ("2. Visualizar Matriz\n");  
        printf ("3. Rotar Matriz Derecha\n");  
        printf ("4. Cambiar Filas/Columnas Matriz\n");  
        printf ("5. Sumar Filas\n");  
        printf ("6. Incremento dinero paso por referencia\n");  
        printf ("7. Incremento dinero paso por valor\n");  
        printf ("9. Salir\n\n");  
        printf ("Seleccione: ");  
        scanf ("%i",&opcion);  
        switch (opcion) {  
            case 1:  
                printf ("\nOpcion 1\n\n");  
                IntroduceMatriz (m, f,c);  
            break;  
            case 2:  
                printf ("\nOpcion 2\n\n");  
                VisualizaMatriz (m,f,c);  
            break;  
            case 3:  
                printf ("\nOpcion 3\n\n");  
                RotarMatrizDrcha (m,f,c);  
            break;  
            case 4:  
                printf ("\nOpcion 4\n\n");  
                CambiarFilasColumnas (m,f,c);  
            break;  
            case 5:  
                printf ("\nOpcion 5\n\n");  
                SumarFilasColumnas (m,f,c);  
            break;  
            case 6:  
                printf ("\nOpcion 6\n\n");  
  
            break;  
            case 7:  
                printf ("\nOpcion 7\n\n");  
  
            default:  
                printf ("\nSeleccione una opcion correcta\n");  
            break;  
                      
        }  
    } while (opcion != 9);  
    return 0;  
}  
  
  
int IntroduceMatriz (int m[3][3], int f, int c) {  
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            printf ("Introduce coordenada [%i][%i]: ",f,c);  
            scanf ("%i",&m[f][c]);  
        }   
    }  
      
    printf ("\nDone!\n");  
}  
  
int VisualizaMatriz (int m[3][3], int f, int c) {  
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            printf ("%i  ",m[f][c]);  
        } printf ("\n");  
    }  
      
    printf ("\nDone!\n");  
}  
  
int RotarMatrizDrcha (int m[3][3], int f, int c) {  
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            if (c == 2) {  
                n[f][0] = m[f][c];  
            } else {  
                n[f][c+1] = m [f][c];  
            }  
        }  
    }  
      
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            m[f][c] = n[f][c];  
        }  
    }  
    printf ("\nDone!\n");         
}  
  
  
int CambiarFilasColumnas (int m[3][3], int f, int c) {  
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            n[c][f] = m[f][c];  
        }  
    }  
      
    for (f=0; f<DIMENSION; f++) {  
        for (c=0; c<DIMENSION; c++) {  
            m[f][c] = n[f][c];  
        }  
    }  
    printf ("\nDone!\n");         
}  
  
  
int SumarFilasColumnas (int m[3][3], int f, int c) {  
      
    for (f=0; f<DIMENSION; f++) {  
        suma=0;  
        for (c=0; c<DIMENSION; c++) {  
            suma+=m[f][c];  
            //printf ("Debug: %i\n",suma);  
            if (c == 2) {  
                printf ("\nLa Fila [%i] suma: %i\n",f,suma);  
            }  
        }  
    }  
      
    printf ("\nDone!\n");         
}