duda con código if [c++]

Iniciado por andrex.125, 29 Mayo 2013, 19:16 PM

0 Miembros y 1 Visitante están viendo este tema.

andrex.125

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.


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:


Gracias.

BlackM4ster

Código (cpp) [Seleccionar]
if (numfilas == numcolumnas)

Está comparando el numero de filas con el numero de columnas...
Mira tus matrices... 3!=2
- Pásate por mi web -
https://codeisc.com

andrex.125

Cita de: Black Master en 29 Mayo 2013, 19:22 PM
Código (cpp) [Seleccionar]
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.

BlackM4ster

Ah, no había entendido bien entonces...
- Pásate por mi web -
https://codeisc.com

leosansan

#4
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!. ... ...


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

amchacon

#5
Cita de: 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.
¡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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

andrex.125

Cita de: amchacon en 29 Mayo 2013, 19:43 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.

amchacon

Código (cpp) [Seleccionar]
return NULL;

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

Código (cpp) [Seleccionar]
if (!MultiDosMarices)
{
   cout<<"No se pudo completar la operacion";
}
else
{
  // Mostramos el resultado por pantalla
}


Si te parece más intuitivo:

Código (cpp) [Seleccionar]
if (MultiDosMarices == NULL)
{
   cout<<"No se pudo completar la operacion";
}
else
{
  // Mostramos el resultado por pantalla
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

andrex.125

Cita de: amchacon en 29 Mayo 2013, 19:43 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.

leosansan

Cita de: amchacon en 29 Mayo 2013, 19:43 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":




¿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!. .... ...