SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: kingston en Lunes 5 de Febrero de 2007, 15:41

Título: Alguien Me Puede Ayudar Con El Error????
Publicado por: kingston en Lunes 5 de Febrero de 2007, 15:41
Wenas!

Tengo hecho este código para calcular la potencia enésima de una matriz. Pero el resultado obtenido no es correcto... Alguien podría decirme dónde está mi error???


void MatrizEnesima (int m1[][9], int producto[][9], int filas1, int columnas1, int columnas2) /*funcion matriz enesima*/
{
int i, j, k, n;
int aux[9][9];

/*Asignamos el mismo valor de la matriz m1 a la matriz aux*/
for (i=0; i<filas1; i++)
   {
   for(j=0; j<columnas2; j++)
      {
      aux[j] = m1[j];
      }
   }
   
for(i=1; i<n; i++)
   {
   MultiplicarMatrices(m1, aux, producto, columnas1, filas1, columnas2);
      for (j=0; j<filas1; j++)                   /*Copiamos la matriz resultante en aux*/
             {
         for(k=0; k<columnas2; k++)
            {
            producto [j][k]= aux[j][k];
            }
         }
   }
}








La función MultiplicarMatrices funciona correctamente. Com habeis podido observar, se trata de programación en C.

Gracias
Título: Re: Alguien Me Puede Ayudar Con El Error????
Publicado por: hano en Lunes 5 de Febrero de 2007, 16:24
¿Cuando inicializas 'n'?
¿No debería ser un parámetro?

Luis Javier López Arredondo
Título: Re: Alguien Me Puede Ayudar Con El Error????
Publicado por: kingston en Lunes 5 de Febrero de 2007, 17:13
:( ... No me habia dado cuenta, pero he probado iniciándola y tampoco me da el resultado...  Algún error más?

Gracias.
Título: Re: Alguien Me Puede Ayudar Con El Error????
Publicado por: hano en Lunes 5 de Febrero de 2007, 17:45
1. Comprueba que el método de multiplicar matrices no modifica las originales, que inicializa todo correctamente y no hay efectos colaterales de su invocación.

2. Por lo que puedo deducir, la función MultiplicarMatrices hace producto=m1*aux, luego, pregunto, ¿no debería ser como sigue?
Código: Text
  1.  for(k=0; k&#60;columnas2; k++)
  2. {
  3. aux[j][k] = producto [j][k];
  4. }
  5.  
De hecho, es lo que diche el comentario (/*Copiamos la matriz resultante en aux*/), pero lo hace alrevés.

3. ¿Influye en el resultado que las multiplicaciones se realicen por la izquierda? ¿Y si lo haces por la derecha?

Luis Javier López Arredondo
Título: Re: Alguien Me Puede Ayudar Con El Error????
Publicado por: kingston en Lunes 5 de Febrero de 2007, 18:05
He cambiado el punto 2 que me has dicho pero sigue sin salir...

¿Cómo puedo comprobar esto??

 1. Comprueba que el método de multiplicar matrices no modifica las originales, que inicializa todo correctamente y no hay efectos colaterales de su invocación.


Y el punto 3, no comprendo a qué te refieres, porque no es lo mismo multiplicarla a la izquierda que a la derecha...

3. ¿Influye en el resultado que las multiplicaciones se realicen por la izquierda? ¿Y si lo haces por la derecha?De hecho, es lo que diche el comentario (/*Copiamos la matriz resultante en aux*/), pero lo hace alrevés.


Gracias.