-
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
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;
}
#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;
}