Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: DotarSojat en 16 de Noviembre 2015, 15:33
-
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é
#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;
}
-
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!
-
Los errores que me da son los siguientes http://prntscr.com/94c29l (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
-
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:
#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