Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: andrex.125 en 29 Mayo 2013, 19:16 pm



Título: duda con código if [c++]
Publicado por: andrex.125 en 29 Mayo 2013, 19:16 pm
hola , tengo una duda, estoy haciendo un programa sobre matrices donde sumo, resto y multiplico, mi error es en la multiplicación, se sabe que para multiplicar dos matrices la condición es: que el número de columnas de la matriz A sea igual al número de filas de matriz B, ya realice todo el código en esta parte, ahora si el error estoy intentando hacer una comprobación con un if para que me multiplique solo cuando el numero de filas sea igual al numero de columnas y de lo contrario me muestre un mensaje, el problema es que me arroja la multiplicación y el mensaje.

Código:
Matriz Matriz::MultiDosMarices (Matriz m) //se crea objeto Matriz para guardar resultado de la multiplicacion de las dos matrices 
 {
  Matriz mul (numfilas, numcolumnas);
  if (numfilas == numcolumnas)
  {
for (int i=0;i<numfilas;i++)
    {
    for (int j=0;j<numcolumnas;j++)
{
mul.matriz [i][j]=0;
for (int k=0;k<numcolumnas;k++)
{
mul.matriz[i][j]=mul.matriz[i][j]+matriz[i][k]* m.matriz[k][j];
}          
}

    }
  return mul;
  }
  else
  {
  cout<<"esta multiplicacion no se puede realizar."<<endl;
  }
}

Esta es la captura:
(http://sphotos-h.ak.fbcdn.net/hphotos-ak-ash4/300520_10201263413566431_1257815536_n.jpg)

Gracias.


Título: Re: duda con código if [c++]
Publicado por: BlackM4ster en 29 Mayo 2013, 19:22 pm
Código
  1. if (numfilas == numcolumnas)

Está comparando el numero de filas con el numero de columnas...
Mira tus matrices... 3!=2


Título: Re: duda con código if [c++]
Publicado por: andrex.125 en 29 Mayo 2013, 19:29 pm
Código
  1. if (numfilas == numcolumnas)

Está comparando el numero de filas con el numero de columnas...
Mira tus matrices... 3!=2

Exacto, pero es que debería arrojarme el mensaje solamente, pero me arroja también la multiplicación.


Título: Re: duda con código if [c++]
Publicado por: BlackM4ster en 29 Mayo 2013, 19:32 pm
Ah, no había entendido bien entonces...


Título: Re: duda con código if [c++]
Publicado por: leosansan en 29 Mayo 2013, 19:35 pm
Tal como "aparenta" el código, sólo introduces las dimensiones de una matriz lo que da como resultado que siempre podrás sumarlas y restarlas pero como multiplicarlas tienen que ser cuadradas, sino no se cumple la condición para poder multiplicarlas.

Tendrás que modificar el código para que puedas introducir las dimensiones de cada matriz de forma independiente.

Saluditos!. ... ...
(http://st.forocoches.com/foro/images/smilies/ciao.gif)

REEDITO:Te arroja valores basura porque te vas fuera de las dimensiones y serán debidos a otra parte del código.


Título: Re: duda con código if [c++]
Publicado por: amchacon en 29 Mayo 2013, 19:43 pm
Tal como "aparenta" el código, sólo introduces las dimensiones de una matriz lo que da como resultado que siempre podrás sumarlas y restarlas pero como multiplicarlas tienen que ser cuadradas, sino no se cumple la condición para poder multiplicarlas.
¡Error!

Para multriplicar dos matrices, la segunda tiene que tener el mismo número de columnas que la primera. La condición que ha puesto es correcta pero debe retornar un NULL para indicar que no se pudo hacer.


Título: Re: duda con código if [c++]
Publicado por: andrex.125 en 29 Mayo 2013, 19:47 pm
¡Error!

Para multriplicar dos matrices, la segunda tiene que tener el mismo número de columnas que la primera. La condición que ha puesto es correcta pero debes retornar un NULL para indicar que no se pudo hacer.


Disculpa, me podrías indicar como se retorna un NULL.


Título: Re: duda con código if [c++]
Publicado por: amchacon en 29 Mayo 2013, 20:49 pm
Código
  1. return NULL;

Despues tienes que llamar a la función así:

Código
  1. if (!MultiDosMarices)
  2. {
  3.   cout<<"No se pudo completar la operacion";
  4. }
  5. else
  6. {
  7.  // Mostramos el resultado por pantalla
  8. }

Si te parece más intuitivo:

Código
  1. if (MultiDosMarices == NULL)
  2. {
  3.   cout<<"No se pudo completar la operacion";
  4. }
  5. else
  6. {
  7.  // Mostramos el resultado por pantalla
  8. }


Título: Re: duda con código if [c++]
Publicado por: andrex.125 en 29 Mayo 2013, 20:53 pm
¡Error!

Para multriplicar dos matrices, la segunda tiene que tener el mismo número de columnas que la primera. La condición que ha puesto es correcta pero debes retornar un NULL para indicar que no se pudo hacer.



Muchas gracias por tu ayuda, ya logre resolverlo.


Título: Re: duda con código if [c++]
Publicado por: leosansan en 29 Mayo 2013, 23:53 pm
¡Error!

Para multiplicar dos matrices, la segunda tiene que tener el mismo número de columnas que la primera. La condición que ha puesto es correcta pero debe retornar un NULL para indicar que no se pudo hacer.


Creo que no te has fijado bien o más bien no basta con el "pantallazo" para salir de dudas.

Si te fijas comienza introduciendo las dimensiones de una matriz y sus elementos, para posteriormente preguntar si quiere introducir otra matriz, pero ya no pregunta por las dimensiones. Fíjate en el "sub-pantallazo":


(http://i1280.photobucket.com/albums/a497/leosansan/GRAFICOS1/matriznomultiplis3jpg_zpsc8ec4a09.jpg)

¿Ves como en esta segunda matriz entra los dato directamente?. No ha preguntado por la dimensión de esta nueva matriz y claro, en estas condiciones ambas , al no ser cuadradas, no cumplen con la condición de que la segunda tenga el mismo número de columnas que la primera.  ;)

Pero todo es un suponer a partir de la dichosa imagen, pues a lo mejor, pudiera ser  que, es posible que ..... haya introducido previamente las dichositas dimensiones.

Vamos, querido colega amchacon, que para no perder la costumbre quería llevarte un poquito la contraria ...... :laugh: ....porfi, tómalo como un cumplido.

Un fuerte abrazo y como siempre .......Saluditos!. .... ...
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
 


Título: Re: duda con código if [c++]
Publicado por: amchacon en 30 Mayo 2013, 00:08 am
en estas condiciones ambas , al no ser cuadradas, no cumplen con la condición de que la segunda tenga el mismo número de columnas que la primera. ;)
La entrada estaba mal aposta, si lo dijo el mismo autor... Lo que quería saber es si el código era capaz de detectar entradas inválidas.

Te dijo lo de error porque dijiste que para multiplicarlas deben ser cuadradas obligatoriamente. Y eso es falso.

Vamos, querido colega amchacon, que para no perder la costumbre quería llevarte un poquito la contraria ...... :laugh: ....porfi, tómalo como un cumplido.

Round Two. ¡Fight!


Título: Re: duda con código if [c++]
Publicado por: leosansan en 30 Mayo 2013, 00:33 am
..............................................................
Te dijo lo de error porque dijiste que para multiplicarlas deben ser cuadradas obligatoriamente. Y eso es falso.

Round Two. ¡Fight!

NEW ROUND.

Yo no dije eso, sacas mis palabras del  contexto. Yo lo que dije es que al introducir las mismas dimensiones para las dos matrices sólo queda la opción de que sean cuadradas para poder multiplicarlas. Esto que digo no es que para multiplicar matrices sen obligatoriamente cuadradas .....¿ta´claro ahora?.

!Hasta el próximo round, si quieres ........
;)

(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: duda con código if [c++]
Publicado por: amchacon en 30 Mayo 2013, 09:59 am
NEW ROUND.

Yo no dije eso, sacas mis palabras del  contexto. Yo lo que dije es que al introducir las mismas dimensiones para las dos matrices sólo queda la opción de que sean cuadradas para poder multiplicarlas. Esto que digo no es que para multiplicar matrices sen obligatoriamente cuadradas .....¿ta´claro ahora?.

!Hasta el próximo round, si quieres ........
;)

(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Aaaah, esque no te has explicado bien ;)