• Lenguaje

    C

  • Descripción

    Multiplica dos matrices (A y B) de cualquier tamaño y guarda en resultado en otra matriz (C)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
    int i, j, k, filas_a, columnas_a, filas_b, columnas_b;
    float **a, **b, **c, f;
    printf ("Ingrese el n\243mero de filas de la matriz A   : ");
    scanf ("%d", &filas_a);
    printf ("Ingrese el n\243mero de columnas de la matriz A: ");
    scanf ("%d", &columnas_a);
    printf ("Ingrese el n\243mero de filas de la matriz B   : ");
    scanf ("%d", &filas_b);
    printf ("Ingrese el n\243mero de columnas de la matriz B: ");
    scanf ("%d", &columnas_b);
    if (filas_a<1 || columnas_a<1 || filas_b<1 || columnas_b<1 || columnas_a != filas_b)
        fprintf (stderr, "\nLas matrices no se pueden multiplicar.\n");
    else
    {
        (void) getchar();
        a = (float**) malloc (sizeof (float*) * filas_a);
        b = (float**) malloc (sizeof (float*) * filas_b);
        c = (float**) malloc (sizeof (float*) * filas_a);
        putchar ('\n');
        for (i=0; i<filas_a; i++)
        {
            a[i] = (float*) malloc (sizeof (float) * columnas_a);
            for (j=0; j<columnas_a; j++)
            {
                printf ("Ingrese el elemento A[%d][%d]: ", i, j);
                scanf ("%f", &f);
                a[i][j] = f;
            }
        }
        putchar ('\n');
        for (i=0; i<filas_b; i++)
        {
            b[i] = (float*) malloc (sizeof (float) * columnas_b);
            for (j=0; j<columnas_b; j++)
            {
                printf ("Ingrese el elemento B[%d][%d]: ", i, j);
                scanf ("%f", &f);
                b[i][j] = f;
            }
        }
        for (i=0; i<filas_a; i++)
        {
            c[i] = (float*) malloc (sizeof (float) * columnas_b);
            for (j=0; j<columnas_b; j++)
            {
                c[i][j] = 0;
                for (k=0; k<filas_b; k++)
                    c[i][j] += a[i][k] * b[k][j];
            }
        }
        printf ("\nResultado:\n");
        for (i=0; i<filas_a; i++)
        {
            printf ("[\t");
            for (j=0; j<columnas_b; j++)
                printf ("%g\t", c[i][j]);
            printf ("]\n");
        }
    }
    putchar ('\n');
    system ("pause");
    return EXIT_SUCCESS;
}