Título: Corrección de ejercicio Publicado por: Soulklax en 5 Noviembre 2016, 20:25 pm Quisiera que alguien me diga si este ejercicio esta bien os lo pongo:
P4-2: Calcular las raíces de una ecuación de segundo grado ax^2+bx+c=0 con coeficientes enteros Las raíces vienen determinadas por la ecuación: (la expresión de una ecuación de segundo grado) La función sqrt() de la librería matemática extrae la raíz cuadrada de un número positivo. Para poder usarla añade la cabecera #include <cmath> al fichero fuente. Para extraer la raíz de un número negativo debes cambiarlo previamente de signo (multiplicarlo por (- 1)) y tener en cuenta a partir de ese momento la naturaleza imaginaria del resultado. El programa considerará todos los casos particulares: que a sea 0 (la ecuación no es de 2º grado y así evitamos dividir por 0), que a y b sean 0 (absurdo), que el discriminante sea 0 (raíz doble real), etc. Donde sea necesario debes usar static_cast<double>(variable)para obtener los resultados correctos y evitar así obtener la división entera en lugar de la correcta en coma flotante. Código Muchas gracias por vuestro tiempo. saludos. Título: Re: Corrección de ejercicio Publicado por: 4dr14n31t0r en 5 Noviembre 2016, 21:41 pm En primer lugar, el absurdo de a = 0 y b = 0 no es tan absurdo cuando c = 0.
En segundo lugar, es una tonteria comprobar dos veces seguidas a == 0. En vez de eso, anida un if dentro de otro. Al if externo le metes en la condicion a == 0, y en el if interno b == 0. No se si me entiendes. Ademas, ya podias resolver la ecuacion para a == 0 en vez de limitarte a decir que no es de segundo grado, ¿no?. Tampoco entiendo porque pides meter los valores primero b, luego a y c. ¿No seria mas logico meter primero a, luego b, luego c? :-\ (aunque eso no afecta al funcionamiento del programa). Por ultimo, no has aplicado bien la formula. Dices que la solucion de la x es la raiz del discriminante, es decir x = sqrt(b*b - 4*a*c); pero eso no es cierto. x = (-b +- sqrt(b*b - 4*a*c))/(2*a) Título: Re: Corrección de ejercicio Publicado por: Soulklax en 6 Noviembre 2016, 06:19 am Es lo que pone en el enunciado del ejercicio lo de las variantes a=0 y B =0; lo de el if dentro de otro if lo modificaré; y como en el enunciado pide calula las raíces de una ecuación de segundo grado hice x= a el valor de la raiz de segundo grado directamente ; osea que tengo que (despues de calcular la raiz utilizar la expresión de la ecuación de segundo grado x = -b... para calcular el resultado final?
Muchas gracias por la ayuda igual😃 Título: Re: Corrección de ejercicio Publicado por: 4dr14n31t0r en 6 Noviembre 2016, 10:57 am Creo que el problema esta en que entendiste mal la parte de calcular las raices de un polinomio. Calcular las raices de un polinomio significa calcular los valores de X para los cuales se cumple la igualdad
a*x*x + b*x + c = 0. Si por ejemplo a = 1, b = -3 y c = 2, las raices de x*x - 3*x + 2 = 0 seran x=1 y x=2, ya que 1*1 - 3*1 + 2 = 0 y 1*2 - 3*2 + 2 = 0; Título: Re: Corrección de ejercicio Publicado por: Soulklax en 6 Noviembre 2016, 12:34 pm Vale vale solo me quedaría modificar eso la X; y entonces para que se utilicaria el static_cast ese que pone en el enunciado?:/
Título: Re: Corrección de ejercicio Publicado por: Soulklax en 6 Noviembre 2016, 14:50 pm Ahora que lo pienso si pongo a=2, B=-3 y c=1
Las raíces según el programa son :x1=4, y x2=2 Y no es eso Título: Re: Corrección de ejercicio Publicado por: ivancea96 en 6 Noviembre 2016, 16:15 pm Ahora que lo pienso si pongo a=2, B=-3 y c=1 A mi me da los valores correctos, 1 y -1. Asegúrate de que escribiste el valor en cada coeficiente (b, a, c). Yo de ti lo reordenaba, no es muy intuitivo ese orden.Las raíces según el programa son :x1=4, y x2=2 Y no es eso Como detalle, el else del final lo puedes quitar. No está haciendo nada. Título: Re: Corrección de ejercicio Publicado por: Soulklax en 6 Noviembre 2016, 16:36 pm Vale gracias ahora lo reordenó porque vamos!
Y respecto a lo segundo el último else es para cuando el discriminante es positivo es decir sin numeros complejos al realizar su raíz Título: Re: Corrección de ejercicio Publicado por: ivancea96 en 6 Noviembre 2016, 20:11 pm Sobra porque:
- En primer lugar, ese else no tiene llaves, así que la segunda sentencia se ejecutará siempre. - En segundo lugar, tienes un return dentro del if, así que el else saltara siempre que no salte el if. Lo mejor sería ponerle llaves al else. Título: Re: Corrección de ejercicio Publicado por: Soulklax en 7 Noviembre 2016, 18:14 pm vale muchísimas gracias! ;D
|