-
Lenguaje
Pascal
-
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
70
71
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
70
71
program multiplicamatrices;
uses crt;
type
realarray = array[0..0] of real;
prealarray = ^realarray;
realmatrix = array[0..0] of prealarray;
prealmatrix = ^realmatrix;
var i, j, k, filas_a, columnas_a, filas_b, columnas_b : integer;
var a, b, c : prealmatrix;
var tecla : char;
begin
write ('Ingrese el n'#163'mero de filas de la matriz A : ');
readln (filas_a);
write ('Ingrese el n'#163'mero de columnas de la matriz A: ');
readln (columnas_a);
write ('Ingrese el n'#163'mero de filas de la matriz B : ');
readln (filas_b);
write ('Ingrese el n'#163'mero de columnas de la matriz B: ');
readln (columnas_b);
if (filas_a<1) or (columnas_a<1) or (filas_b<1) or (columnas_b<1) or (columnas_a<>filas_b) then
writeln (#10#13'Las matrices no se pueden multiplicar.')
else
begin
getmem (a, sizeof (prealarray) * filas_a);
getmem (b, sizeof (prealarray) * filas_b);
getmem (c, sizeof (prealarray) * filas_a);
writeln;
for i := 0 to filas_a - 1 do
begin
getmem (a^[i], sizeof (real) * columnas_a);
for j := 0 to columnas_a - 1 do
begin
write ('Ingrese el elemento A[', i, '][', j, ']: ');
readln (a^[i]^[j]);
end;
end;
writeln;
for i := 0 to filas_b - 1 do
begin
getmem (b^[i], sizeof (real) * columnas_b);
for j := 0 to columnas_b - 1 do
begin
write ('Ingrese el elemento B[', i, '][', j, ']: ');
readln (b^[i]^[j]);
end;
end;
for i := 0 to filas_a - 1 do
begin
getmem (c^[i], sizeof (real) * columnas_b);
for j := 0 to columnas_b - 1 do
begin
c^[i]^[j] := 0;
for k := 0 to filas_b - 1 do
c^[i]^[j] := c^[i]^[j] + a^[i]^[k] * b^[k]^[j];
end;
end;
writeln (#10#13'Resultado:');
for i := 0 to filas_a - 1 do
begin
write ('[ ');
for j := 0 to columnas_b - 1 do
write (c^[i]^[j]:12:6, ' ');
writeln (' ]');
end;
end;
write (#10#13'Presione una tecla para terminar . . . ');
tecla := readkey;
end.
uses crt;
type
realarray = array[0..0] of real;
prealarray = ^realarray;
realmatrix = array[0..0] of prealarray;
prealmatrix = ^realmatrix;
var i, j, k, filas_a, columnas_a, filas_b, columnas_b : integer;
var a, b, c : prealmatrix;
var tecla : char;
begin
write ('Ingrese el n'#163'mero de filas de la matriz A : ');
readln (filas_a);
write ('Ingrese el n'#163'mero de columnas de la matriz A: ');
readln (columnas_a);
write ('Ingrese el n'#163'mero de filas de la matriz B : ');
readln (filas_b);
write ('Ingrese el n'#163'mero de columnas de la matriz B: ');
readln (columnas_b);
if (filas_a<1) or (columnas_a<1) or (filas_b<1) or (columnas_b<1) or (columnas_a<>filas_b) then
writeln (#10#13'Las matrices no se pueden multiplicar.')
else
begin
getmem (a, sizeof (prealarray) * filas_a);
getmem (b, sizeof (prealarray) * filas_b);
getmem (c, sizeof (prealarray) * filas_a);
writeln;
for i := 0 to filas_a - 1 do
begin
getmem (a^[i], sizeof (real) * columnas_a);
for j := 0 to columnas_a - 1 do
begin
write ('Ingrese el elemento A[', i, '][', j, ']: ');
readln (a^[i]^[j]);
end;
end;
writeln;
for i := 0 to filas_b - 1 do
begin
getmem (b^[i], sizeof (real) * columnas_b);
for j := 0 to columnas_b - 1 do
begin
write ('Ingrese el elemento B[', i, '][', j, ']: ');
readln (b^[i]^[j]);
end;
end;
for i := 0 to filas_a - 1 do
begin
getmem (c^[i], sizeof (real) * columnas_b);
for j := 0 to columnas_b - 1 do
begin
c^[i]^[j] := 0;
for k := 0 to filas_b - 1 do
c^[i]^[j] := c^[i]^[j] + a^[i]^[k] * b^[k]^[j];
end;
end;
writeln (#10#13'Resultado:');
for i := 0 to filas_a - 1 do
begin
write ('[ ');
for j := 0 to columnas_b - 1 do
write (c^[i]^[j]:12:6, ' ');
writeln (' ]');
end;
end;
write (#10#13'Presione una tecla para terminar . . . ');
tecla := readkey;
end.