Código de Dev - C++ - Producto de 2 matrices

<<>>
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Producto de 2 matricesgráfica de visualizaciones


Dev - C++

Publicado el 7 de Marzo del 2021 por Guerrero15
456 visualizaciones desde el 7 de Marzo del 2021
Buenos días:

Ayer conseguí hacer un código que sacara una matriz resultante del producto de otras 2

Nota: La parte del producto la he sacado porque he conseguido ver el patrón.
Matemáticamente se pueden multiplicar todas las matrices. Sin embargo hace falta que se cumple un requisito. Las columnas de la matriz A deben ser iguales a las filas de la matriz B.

Espero que se entienda.

P.D. Lo he comprobado y funciona perfectamente

Version final 1.0

Publicado el 7 de Marzo del 2021gráfica de visualizaciones de la versión: Version final 1.0
457 visualizaciones desde el 7 de Marzo del 2021
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <windows.h>
 
int tam (int ord);
 
int main(){
    int filA, filB, colA, colB, i, j, num;
 
    //Signos del español
    setlocale (LC_ALL, "spanish");
 
    //Pedir filas y columnas de A y B y delarar matrices
    printf ("\n\t TAMAÑO DE LA MATRIZ A");
    printf ("\n\t =====================");
 
    filA = tam (1);
    colA = tam (2);
 
    int matA [filA][colA];
 
    system ("cls");
 
    printf ("\n\t TAMAÑO DE LA MATRIZ B");
    printf ("\n\t =====================");
 
    filB = tam (1);
    colB = tam (2);
 
    int matB [filB][colB];
 
    system ("cls");
 
    //Comprobar condición para poder multiplcar las matrices
    if (colA==filB){
 
        //Pedir valores de las matrices A y B
        printf ("\n\t INSERTE VALORES DE LA MATRIZ A");
        printf ("\n\t ============================== \n");
 
        for (i=0; i<filA; i++){
            for (j=0; j<colA; j++){
                printf ("\n\t Fila %d columna %d: ", i+1, j+1);
                scanf ("%d", &matA[i][j]);
            }
        }
 
        system ("cls");
 
        printf ("\n\t INSERTE VALORES DE LA MATRIZ B");
        printf ("\n\t ============================== \n");
 
        for (i=0; i<filB; i++){
            for (j=0; j<colB; j++){
                printf ("\n\t Fila %d columna %d: ", i+1, j+1);
                scanf ("%d", &matB[i][j]);
            }
        }
 
        system ("cls");
        //Definir la matriz C
        int matC [filA][colB];
 
        //Para que todos los valores sean 0. Necesario para luego
        for (i=0; i<filA; i++){
            for (j=0; j<colB; j++){
                matC[i][j] = 0;
            }
        }
        //Producto. Si no se entiende ver como se multiplican las matrices a mano
        for (i=0; i<filA; i++){
            for (j=0; j<colB; j++){
                //filB == colA, así que dá igual cual poner
                for (int k=0; k<filB; k++){
                    matC [i][j] = matC [i][j] + matA[i][k] * matB[k][j];
                }
            }
        }
        //Mostrar matrices A, B y C con un tiempo de retraso para hacer más visual
        printf ("\n\t REVISION DE MATRICES Y RESULTADO");
        printf ("\n\t ################################");
 
        printf ("\n\n\t Matriz A");
        printf ("\n\t ======== \n\t");
 
        for (i=0; i<filA; i++){
            for (j=0; j<colA; j++){
                printf ("%3d ", matA[i][j]);
                Sleep (400);
            }
 
            printf ("\n\t");
        }
 
        Sleep (1000);
 
        printf ("\n\n\t Matriz B");
        printf ("\n\t ======== \n\t");
 
        for (i=0; i<filB; i++){
            for (j=0; j<colB; j++){
                printf ("%3d ", matB[i][j]);
                Sleep (400);
            }
 
            printf ("\n\t");
        }
 
        Sleep (1000);
 
        printf ("\n\n\t Matriz C");
        printf ("\n\t ======== \n\t");
 
        for (i=0; i<filA; i++){
            for (j=0; j<colB; j++){
                printf ("%3d ", matC[i][j]);
                Sleep (400);
            }
 
            printf ("\n\t");
        }
    }
    //Si no se cumple el procedimiento, volver a pedir datos de filas y columnas de A y B
    else {
        printf ("\n\t ERROR 281");
        printf ("\n\t =========");
 
        printf ("\n\n\t Para poder multiplicar 2 matrices, las columnas de A");
        printf ("\n\t tienen que ser igual a las filas de B, con una matriz C");
        printf ("\n\t resultante de tamaño filas de A por columnas de B");
    }
 
    system ("");
    return 0;
}
//Función para facilitar la compilacion del codigo. No necesario
int tam (int ord){
    int fil, col;
 
    if (ord==1){
        printf ("\n\n\t Número de filas: ");
        scanf ("%d", &fil);
 
        return fil;
    }
 
    else if (ord==2){
        printf ("\n\t Número de columnas: ");
        scanf ("%d", &col);
 
        return col;
    }
}



Comentarios sobre la versión: Version final 1.0 (0)


No hay comentarios
 

Comentar la versión: Version final 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s6927