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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Multiplicación de matrices
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Multiplicación de matrices  (Leído 4,597 veces)
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Multiplicación de matrices
« en: 4 Septiembre 2012, 17:09 pm »

Hola,

He redactado este codígo que genera, suma, resta , multiplica y multiplica por un escalar matrices.
La función de multiplicar me falla, podeis ayudarme?
gracias.

Código
  1. #include <stdlib.h>
  2. #include<stdio.h>
  3. #include <time.h>
  4.  
  5.  
  6. int n;
  7.  
  8. void generar_matriz (int m[][3]);
  9. void sumar (int m1[][3], int m2[][3]);
  10. void restar (int m1[][3], int m2[][3]);
  11. void multiplicar (int m1[][3], int m2[][3]);
  12. void escalar (int m1[][3]);
  13.  
  14. int   main()
  15. {    
  16.  
  17.        printf("dimension");  
  18.      scanf("%d",&n);  
  19.      int matriz1[n][3];
  20.       int matriz2[n][3];
  21.  
  22.  
  23.        srand (time(NULL));
  24.  
  25.        generar_matriz (matriz1);
  26.        printf("\n");
  27.        generar_matriz (matriz2);
  28.        printf("\n");
  29.        sumar (matriz1, matriz2);
  30.        printf("\n");
  31.        restar (matriz1, matriz2);
  32.        printf("\n");
  33.        multiplicar(matriz1,matriz2);
  34.        printf("\n");
  35.        escalar(matriz1);
  36.  
  37.        printf ("Presione una tecla para salir.....");
  38.        getchar();
  39.  
  40. }
  41. /*********************************************/
  42.  
  43. void generar_matriz (int m[][3])
  44. {
  45.  
  46.    int i,j;
  47.  
  48.    for (i=0;i<n;i++)
  49.        {
  50.            for (j=0;j<n;j++)
  51.                {
  52.                    m[i][j]=(rand()%16);
  53.                    printf("%d\t",m[i][j]);
  54.                }
  55.            printf("\n\n");
  56.        }
  57.  
  58. }
  59.  
  60. void sumar (int m1[][3], int m2[][3])
  61. {
  62.    int i,j;      
  63.    for (i=0;i<n;i++)
  64.        {
  65.            for (j=0;j<n;j++)
  66.                {        
  67.                printf("%d\t",(m1[i][j])+(m2[i][j]));
  68.                }
  69.        printf("\n\n");
  70.        }
  71. }
  72.  
  73. void restar (int m1[][3], int m2[][3])
  74. {
  75.    int i,j;      
  76.    for (i=0;i<n;i++)
  77.        {
  78.            for (j=0;j<n;j++)
  79.                {
  80.  
  81.                printf("%d\t",(m1[i][j])-(m2[i][j]));
  82.                }
  83.        printf("\n\n");
  84.        }
  85.  
  86.  
  87. }
  88. void escalar (int m1[][3]){
  89.     int i, j, e;
  90.     printf("escalar");
  91.     scanf("%d",&e);    
  92.    for (i=0;i<n;i++)
  93.        {
  94.            for (j=0;j<n;j++)
  95.                {
  96.                printf("%d\t", e*(m1[i][j]));
  97.                }
  98.                printf("\n");
  99.        }
  100. }                    
  101.  
  102. void multiplicar (int m1[][3], int m2[][3])
  103. {
  104.    int i,j, k;  
  105.    int m3[n][3];  
  106.    for (i=0;i<n;i++)
  107.        {
  108.            for (j=0;j<n;j++)
  109.                {
  110.                             for (k=0;k<n;k++)
  111.                             {
  112.  
  113.                             m3[i][j]=m3[i][j]+(m1[i][k]*m2[k][j]);
  114.                             }
  115.                printf("%d\t",m3[i][j]);
  116.                }
  117.        printf("\n\n");
  118.        }
  119.  
  120.  
  121. }


En línea

KaL3o

Desconectado Desconectado

Mensajes: 60



Ver Perfil
Re: Multiplicación de matrices
« Respuesta #1 en: 5 Septiembre 2012, 11:43 am »

Debes tener en cuenta como se multiplican las matrices

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



En línea

Todos los caminos se vuelven a juntar. Pero nunca de la misma forma.
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: Multiplicación de matrices
« Respuesta #2 en: 5 Septiembre 2012, 14:09 pm »

Hola Kal,

El problema que me da es que la matriz la imprime como si no estuviera inicializada, es decir cada campo aparece relleno de una ristra de numeros.

Un saludo
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Multiplicación de matrices
« Respuesta #3 en: 5 Septiembre 2012, 14:43 pm »

Hola Kal,

El problema que me da es que la matriz la imprime como si no estuviera inicializada, es decir cada campo aparece relleno de una ristra de numeros.

Un saludo
¿Puede ser por que no los inicializas a 0? Voy a probar y te digo.

EDITO:No sé como va el código pero es eso seguro, los inicializo a 0 porque si no el compilador le dá un valor cualquiera, deberías declarar las variables dentro de los fors , por que si no despues no las puedes reutilizar porque lo tengo que volver a inicializar a 0 o a lo que sea , te dejo la función:
Código
  1. void multiplicar (int m1[][3], int m2[][3])
  2. {
  3.    int m3[n][3];
  4.    for(int i = 0; i<=n; ++i) //Mientras i sea menor o igual a n
  5.    {
  6.        for(int j = 0; j<=3; ++j) //Mientras j sea menor o igual a 3
  7.        {
  8.            m3[i][j]=0;//Establece el elemento con fila i y columna j en 0
  9.        }
  10.    }
  11.    for (int i=0; i<n; i++)
  12.    {
  13.        for (int j=0; j<n; j++)
  14.        {
  15.            for (int k=0; k<n; k++)
  16.            {
  17.  
  18.                m3[i][j]=m3[i][j]+(m1[i][k]*m2[k][j]);
  19.            }
  20.            printf("%d\t",m3[i][j]);
  21.        }
  22.        printf("\n\n");
  23.    }
  24. }
  25.  
« Última modificación: 5 Septiembre 2012, 14:54 pm por avesudra » En línea

Regístrate en
ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: Multiplicación de matrices
« Respuesta #4 en: 5 Septiembre 2012, 18:03 pm »

Gracias Avesudra,
solucionado

un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Multiplicacion de matrices Anxk y Bkxm « 1 2 »
Programación C/C++
chicainge 10 5,701 Último mensaje 8 Agosto 2014, 13:55 pm
por chicainge
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