Autor Tema: C++ cplusplus operadores aritméticos módulo resto división y división entera  (Leído 3925 veces)

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Buenas me mandaron a que resuelva la siguiente expresión,  (X^2 + 8 MOD 2 DIV Y / (3 – 4)) / (8 - X / 7 + Z * 11 MOD 3) en c++, los valores x,y,z son introducidos por el usuari, pero cuando intento resolver la expresión me da un error, pero no entiendo por qué

Código: [Seleccionar]
#include <iostream>
using namespace std;
int main() {

int x,y,z,r;
cout<<"introduzca el valor entero x"<<endl;
cin>>x;
cout<<"introduzca el valor entero y"<<endl;
cin>>y;
cout<<"introduzca el valor entero z"<endl;
cin>>z;

r=(x^2 + 8 % 2 / y / (3 – 4)) / (8 - x / 7 + z * 11 % 3);

cout<<"el resultado es"<<r<<endl;




return 0;
}
« Última modificación: 18 de Noviembre 2015, 09:30 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

La división entera (div) en C++ se haría usando el operador / siendo los dos términos de la operación enteros.

Partiendo de analizar la expresión (X^2 + 8 MOD 2 DIV Y / (3 – 4)) / (8 - X / 7 + Z * 11 MOD 3)

voy a dividirla en partes. El orden de prioridad para los operadores en programación suele ser el que se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=276:prioridad-entre-operadores-orden-de-prelacion-exponenciacion-mod-div-logicos-etc-cu00133a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

Primera parte: (X^2 + 8 MOD 2 DIV Y / (3 – 4))

Aquí en la parte superior de la fracción tenemos X^2 + 8 MOD 2 DIV Y que se escribiría ¿X^2 + 8 % 2 / Y? Mejor X^2 + (8 % 2) / Y ya que de esta manera estamos considerando asociatividad izquierda para los operadores mod y div y que ambos tienen igual precedencia. Si no hacemos esto posiblemente tome la expresión dando preferencia a la división con lo que quedaría como X^2 + 8 % (2 / Y)

Nos queda ((X^2 + (8 % 2) / Y) / (3 – 4))



Segunda parte: (8 - X / 7 + Z * 11 MOD 3)

nos queda (8 - X / 7 + Z * 11 % 3)

La unión: ((X^2 + (8 % 2) / Y) / (3 – 4)) / (8 - X / 7 + Z * 11 % 3)


El error que te está dando posiblemente se deba a que el denominador toma valor 0. En una división por ejemplo a/b si el denominador toma valor 0 el resultado es indeterminación (error, más o menos infinito).

Imagina que introduces x = 56, z = 3

Al operar 8 - (56/7) + (3*11) % 3 obtendríamos 8 - 8 + 33%3 = 0, al tener 0 en el denominador nos devolvería error.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

DotarSojat

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 26
    • Ver Perfil
Los errores que me da son los siguientes http://prntscr.com/94c29l Pero la verdad tal cual como esta no logro encontrar que me falte un paréntesis o un ";" como el error que me da

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas en esta línea cout<<"introduzca el valor entero z"<endl;

Falta un signo <

cout<<"introduzca el valor entero z"<<endl;


Al principio me lanzaba un error pero ahora he conseguido que ejecute este código, no acabo de entender bien por qué lanzaba antes el error:

Código: [Seleccionar]
#include <iostream>
using namespace std;
int main() {

int x,y,z,r;
cout<<"introduzca el valor entero x"<<endl;
cin>>x;
cout<<"introduzca el valor entero y"<<endl;
cin>>y;
cout<<"introduzca el valor entero z"<<endl;
cin>>z;

r= ((x^2) + 8 % 2 / y / (3-4)) / (8 - x / 7 + z * 11 % 3) ;


cout<<"el resultado es "<<r<<endl;

return 0;
}

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".