Operaciones con matrices

Pablo Mateo Segura

#include<stdio.h>
#define DIM 20
void leer_matriz(float a[DIM][DIM], int n);
void sumar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n);
void restar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n);
void multiplicar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n);
void escribir_mat(float a[DIM][DIM], int n);

int main()
{
    float M1[DIM][DIM], M2[DIM][DIM], C[DIM][DIM];
    int i, j, N;
    int opcion;

    do
    {
        printf("Introduce la dimension de las matrices: ");
        scanf("%d", &N);
    } while(N>20);

    printf("Datos primera matriz: \n");
    leer_matriz(M1, N);
    printf("Datos segunda matriz: \n");
    leer_matriz(M2, N);

    printf("\n\n\tElige una de las opciones del menu: ");
    printf("\n\t\t1) Sumar las dos matrices. ");
    printf("\n\t\t2) Restar la segunda matriz a la primera. ");
    printf("\n\t\t3) Restar la primera matriz a la segunda. ");
    printf("\n\t\t4) Multiplicar la primera matriz por la segunda. ");
    printf("\n\t\t5) Multiplicar la segunda matriz por la primera. ");
    scanf("%d", &opcion);

    switch(opcion)
    {
        case 1: sumar_mat(M1,M2,C,N);
                  printf("\nLa matriz de la suma vale: \n");
                  escribir_mat(C, N);
                  break;
        case 2: restar_mat(M1,M2,C,N);
                  printf("\nLa matriz de la resta vale: \n");
                  escribir_mat(C, N);
                  break;
        case 3: restar_mat(M2,M1,C,N);
                  printf("\nLa matriz de la resta vale: \n");
                  escribir_mat(C, N);
                  break;
        case 4: multiplicar_mat(M1,M2,C,N);
                  printf("\nLa matriz del producto vale: \n");
                  escribir_mat(C, N);
                  break;
        case 5: multiplicar_mat(M2,M1,C,N);
                  printf("\nLa matriz del producto vale: \n");
                  escribir_mat(C, N);
                  break;
    }

    return 0;
}

void leer_matriz(float a[DIM][DIM], int n)
{
    int i, j;
    printf("Introduce los elementos de la matriz: ");
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
         scanf("%f", &a[i][j]);
    return ;
}

void sumar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n)
{
    int i, j;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
         c[i][j]=a[i][j]+b[i][j];
    return ;
}

void restar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n)
{
    int i, j;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
         c[i][j]=a[i][j]-b[i][j];
    return ;
}

void multiplicar_mat(float a[DIM][DIM], float b[DIM][DIM], float c[DIM][DIM], int n)
{
    int i, j, k;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
        {
            c[i][j]=0;
            for(k=0;k<n;k++)
                c[i][j]+=a[i][k]*b[k][j];
        }
    return ;
}

void escribir_mat(float a[DIM][DIM], int n)
{
    int i, j;
    for(i=0;i<n;i++)
   {
       for(j=0;j<n;j++)
         {printf("%.2f\t", a[i][j]);}
    printf("\n");
   }
}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s