Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Multiplicacion de Matrices

Estas en el tema de Multiplicacion de Matrices en el foro de C/C++ en Foros del Web. Buenas noches comunidad de forosweb, de nuevo yo por aca , estoy empezando con c apenas por eso investigo, y me oriento bastante antes de ...
  #1 (permalink)  
Antiguo 24/01/2014, 20:47
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Multiplicacion de Matrices

Buenas noches comunidad de forosweb, de nuevo yo por aca , estoy empezando con c apenas por eso investigo, y me oriento bastante antes de hacer un tema bueno me he propuesto realizar una multiplicacion de matrices he leido bastante y me he guiado por algunos codigos para intentar comprender como se multiplican las columnas A x las filas B, el programa compila a la perfeccion, pero el problema aparentemente es del programador (yo), les muestro el codigo aver si podrian orientarme de cual sera el error al imprimir la matriz C que es la del producto
Cita:
#include <stdio.h>
#include <conio.h>


main()
{
int A[5][5],B[5][5],C[5][5],m,n,p,q,i,j,k;


printf("Ingrese la cantidad de filas y columnas de la primera matriz \n");
scanf("%d%d",&m,&n);

printf("Ingrese la cantidad de filas y columnas de la segunda matriz");
scanf("%d%d",&p,&q);


for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (n==p)
{
printf("[%d,%d] = ",i,j);
scanf("%d",&A[i][j]);

}
else
{
printf("Las columnas de la matriz A deben ser iguales que las filas de la matriz B");
getch();
return 0;
}
}

for (i=0;i<p;i++)
for (j=0;j<q;j++)
{
printf("[%d,%d] = ",i,j);
scanf("%d",&B[i][j]);
}

for (i=0;i<m;i++)
for (j=0;j<q;j++)
{
C[i][j]=0;
for (k=1;k<p;k++)
{
C[i][j]=C[i][j]+(A[i][k]*B[k][j]);
}
}

for (i=0;i<m;i++)
{
for (j=0;j<q;j++)
{
printf("%d ",C[i][j]);

}
printf("\n");
}
getch();
}

  #2 (permalink)  
Antiguo 25/01/2014, 01:51
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Multiplicacion de Matrices

Parece funcionar bien...
¿que problema tienes?
  #3 (permalink)  
Antiguo 25/01/2014, 08:26
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Multiplicacion de Matrices

Hola vango no imprime correctamente los resultados ejem:

A : 2 3
1 2
1 0
x
B= 1 3
2 0
=
C= 8 6
5 3
1 3 y el resultado que me da es 6 0
4 0
0 0
  #4 (permalink)  
Antiguo 25/01/2014, 11:56
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: Multiplicacion de Matrices

C[i][j]=C[i][j]+(A[i][k]*B[k][j]); Esta linea no la entiendo :/
intentas usar contadores que estan fuera de ese bucle for
Código C++:
Ver original
  1. for (i=0; i<m; i++)
  2.         for (j=0; j<q; j++) {
  3.             C[i][j]=0;
  4.             for (k=1; k<p; k++) {
  5.                 C[i][j]=C[i][j]+(A[i][k]*B[k][j]);
  6.             }
  7.         }

usas i y j...
pero intentas usar k no lo entiendo

ademas si es multiplicación por que le sumas?:C[i][j]+(A[i][k]*B[k][j])
Si me explicas como lo quieres calcular tal vez encuentre el error.
Ando muy oxidado en las mates
  #5 (permalink)  
Antiguo 25/01/2014, 13:36
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Multiplicacion de Matrices

Hola vango gracias por responder xD bueno a si lo he planteado pero al parecer estoy errado lo quiero multiplicar de esta manera:

http://www.youtube.com/watch?v=szwRmj2YEjg

Alguna sugerencia del algoritmo ? :D

y la finalidad del for k, es que como es misma columna A y misma fila B, tener un contador independiente ya que la condicion para que puede efectuar la multiplicacion es misma columna A y misma filas B no se si me explique, gracias de todas maneras.
  #6 (permalink)  
Antiguo 25/01/2014, 19:05
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Multiplicacion de Matrices

Hola RaKKoS

Tu código esta bien (o por lo menos para el ejemplo que pusiste, no lo probé con otro), sólo le modifique una linea, mejor dicho, el valor inicial de k.

Es la línea 45 de tu código, el for de la k, te lo pego abajo...
Código C:
Ver original
  1. for (k=0;k<p;k++)
  2.             {
  3.                 C[i][j]=C[i][j]+(A[i][k]*B[k][j]);
  4.             }

vos tenías k=1 por lo tanto multiplicabas el valor A[0,1]*B[1,0] y al [0,0] lo pasabas de largo, no lo tenías en cuenta. Yo solo cambie k=1 por k=0

Igualmente probá con otros ejemplos para ver si funciona bien.

Otra cosa, el mensaje de error para cuando n no es igual a p, lo pondría antes de entrar a cualquier for, ya que no se justifica que entre al for si total no son iguales.
Después le agregaría alguna indicación o mensaje para que sea un poco mas entendible lo que se debe o quiere hacer, pero bueno, eso es un extra...

Espero te sirva.
Saludos.
  #7 (permalink)  
Antiguo 25/01/2014, 20:07
 
Fecha de Ingreso: junio-2009
Ubicación: House
Mensajes: 38
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Multiplicacion de Matrices

Jejej gracias payaso, ud ha tenido toda la razon ese detallito ya ha arreglado mi codigo muchas gracias y tomare en cuenta lo de las condiciones antes de entrar al ciclo saludos...

Etiquetas: int, matrices, multiplicacion, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:59.