elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Multiplicacion de matrices Anxk y Bkxm
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Multiplicacion de matrices Anxk y Bkxm  (Leído 5,702 veces)
chicainge

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Multiplicacion de matrices Anxk y Bkxm
« en: 7 Agosto 2014, 14:40 pm »

Tengo un pequeño problema al almacenar la matriz o al calcular el resultado en el subalgoritmo MulMatrizAB(...), podrian ayudarme ha encontrar el problema?? Graciass  :D
El enunciado decia lo siguiente:
Hacer un subalgoritmo que calcule el producto de dos matrices ANxK x B KxM, y lo
almacene en una matriz CNxM.
Aqui les dejo mi codigo:

Código:
#include<iostream>

using namespace std;

const int N=2;
const int M=3;
const int K=2;

typedef int MatrizA[N][K];
typedef int MatrizB[K][M];
typedef int MatrizC[N][M];

void mostarResul(MatrizC );
void MulMatrizAB(MatrizA ,MatrizB ,MatrizC &);


int main(){
 MatrizA A;
 MatrizB B;
 MatrizC C;

 cout<<"Introduce una matriz A 2x2, por filas " ;
 for(int i=0;i<N;i++){
   for(int j=0;j<K; j++){
     cin>>A[i][j];
   }
 }
 cout<<"introduce una matriz B 2x3, por filas " ;
 for(int i=0;i<K;i++){
   for(int j=0;j<M; j++){
     cin>>B[i][j];
     C[i][j]=0;
   }
 }
 MulMatrizAB(A,B,C);
 mostarResul(C);
}
void MulMatrizAB(MatrizA a,MatrizB b,MatrizC &c){
   int z=0;
   for(int i=0 ; i<N ; i++){
     for(int j=0 ; j<M ; j++){
       for(int h=0 ; h<K ; h++){
         z=(a[i][h]*b[h][j])+z;
         if(h==1){
          c[j][i]=z;
          z=0;
         }
       }
     }
   }
}
void mostarResul(MatrizC c){
 for(int i=0; i<N ; i++){
   for(int j=0; j<M ;j++){
    cout<<c[i][j]<<"  ";
   }
   cout<<endl;
 }
}


En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #1 en: 7 Agosto 2014, 16:34 pm »

Tengo un pequeño problema al almacenar la matriz o al calcular el resultado en el subalgoritmo MulMatrizAB(...), podrian ayudarme ha encontrar el problema??

Creo que debería quedar algo así:

Código
  1. void MulMatrizAB( MatrizA a, MatrizB b, MatrizC &c )
  2. {
  3.    for(int i = 0 ; i < N ; i++){
  4.        for(int j = 0 ; j < M ; j++){
  5.            for(int h = 0 ; h < K ; h++)
  6.                c[i][j] += a[i][h] * b[h][j];
  7.        }
  8.    }
  9. }


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #2 en: 7 Agosto 2014, 16:49 pm »

Yo "creo" que más bien:

Código
  1.  void MulMatrizAB ( MatrizA a , MatrizB b , MatrizC c ) {
  2.   for ( int i = 0 ; i < N ; i++ )
  3.     for ( int j = 0 ; j < M ; j++ ) {
  4.       c[ i ][ j ] = 0 ;
  5.       for ( int h = 0 ; h < K ; h++ )
  6.         c[ i ][ j ] += ( a[ i ][ h ] * b[ h ][ j ] ) ;
  7.     }
  8. }

Sobra el operador & de c.

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 7 Agosto 2014, 17:09 pm por leosansan » En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #3 en: 7 Agosto 2014, 17:08 pm »

Yo "creo" que más bien:
Sobra el operador "&" con la variable c.

Lo de & es verdad, pero el:

Código
  1. c[ i ][ j ] = 0 ;

No le veo la utilidad creo que es innecesario
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #4 en: 7 Agosto 2014, 17:16 pm »

Lo de & es verdad, pero el:

Código
  1. c[ i ][ j ] = 0 ;

No le veo la utilidad creo que es innecesario


Como es una variable acumulador si no está inicializada, "creo, ¡eh!", puede contener basura a la que se irían añadiendo los valores que va sumando.

Lo veo como hacer:

Código
  1.  int num ;
  2.  num += 5 ;
  3.  printf ( "%d" , num ) ;

Como num no está inicializado su valor es impredecible, aunque hay algunos compiladores que por defecto inician las variables a cero, y al sumar 5 el resultado es "rarito".

¡¡¡¡ Saluditos! ..... !!!!


En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #5 en: 7 Agosto 2014, 17:36 pm »

Como es una variable acumulador si no está inicializada, "creo, ¡eh!", puede contener basura a la que se irían añadiendo los valores que va sumando.

Ya se habia inicializado previamente todos sus elementos a cero en el main   
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #6 en: 7 Agosto 2014, 18:06 pm »

Ya se habia inicializado previamente todos sus elementos a cero en el main  

Se inicializa... pero mal. Fíjate que se aprovecha la inicialización de B... si cambias los datos y haces que A deje de ser cuadrada tienes un problema.
En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #7 en: 7 Agosto 2014, 18:31 pm »

Se inicializa... pero mal. Fíjate que se aprovecha la inicialización de B... si cambias los datos y haces que A deje de ser cuadrada tienes un problema.

Entiendo.. pero eso seria otro caso, es de esperar que se harían las modificaciones
convenientes   
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #8 en: 7 Agosto 2014, 18:56 pm »

Es curioso, pero todos tenéis razón :D

En cualquier caso, hacer 3 typedef para 3 matrices no me parece para nada acertado.
1: el tamaño de C se saca del tamaño de A y B.
2: si quieres multiplicar dos matrices en orden contrario, tendrías que cambiarles el 'tipo' de MatrizA a MatrizB y etc.

Lo normal sería hacer una clase para matriz, o simplemente olvidar los typedef.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Multiplicacion de matrices Anxk y Bkxm
« Respuesta #9 en: 7 Agosto 2014, 18:59 pm »

Ya se habia inicializado previamente todos sus elementos a cero en el main   

Cierto, ni había mirado la función main. Sorry¡.

Y totalmente de auerdo con lo expuesto por ivancea96 y eferion.

¡¡¡¡ Saluditos! ..... !!!!


En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Multiplicación de matrices
Programación C/C++
ALONSOQ 4 4,597 Último mensaje 5 Septiembre 2012, 18:03 pm
por ALONSOQ
Ayuda: Multiplicación de matrices - Python
Ejercicios
Itzhack 1 12,401 Último mensaje 4 Noviembre 2014, 01:29 am
por Minusfour_cierralo_o_baneamefull
[C] Multiplicación de matrices sparse por vectores
Programación C/C++
Regexp 0 2,121 Último mensaje 12 Junio 2015, 19:00 pm
por Regexp
multiplicacion de matrices rectangulares con pthreads
Programación C/C++
eberfalu2 2 4,414 Último mensaje 25 Septiembre 2015, 19:37 pm
por eberfalu2
Multiplicacion de matrices con malloc y realloc
Programación C/C++
mc275 2 3,127 Último mensaje 29 Mayo 2017, 05:56 am
por mc275
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines