elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Corrección de ejercicio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Corrección de ejercicio  (Leído 4,093 veces)
Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Corrección de ejercicio
« 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
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int b,a,c,disc;
  8.    int raiz;
  9.    cout <<"Introduce un valor para b: ";
  10.    cin >> b;
  11.    cout <<"Introduce un valor para a: ";
  12.    cin >>a;
  13.    cout<<"Introduce un valor para c: ";
  14.    cin >>c;
  15.    if(a==0&& b==0){
  16.     cout <<"Absurdo"<<endl;
  17.     return 0;}
  18.    else if(a==0){
  19.        cout<<"No es una ecuacion de segundo grado"<<endl;
  20.        return 0;}
  21.    disc=(b*b)-(4*a*c);
  22.    if (disc<0){
  23.        disc=-1*disc;
  24.        raiz=sqrt(disc);
  25.        cout<<"x1="<<raiz<<" x2="<<"-"<<raiz<<"i"<<endl;
  26.        return 0;
  27.    }
  28.    else
  29.        raiz=sqrt(disc);
  30.        cout<<"x1= "<<raiz<<" x2= "<<"-"<<raiz;
  31. }
  32.  
Muchas gracias por vuestro tiempo.
saludos.


En línea

4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: Corrección de ejercicio
« Respuesta #1 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)


En línea

Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Corrección de ejercicio
« Respuesta #2 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😃
En línea

4dr14n31t0r

Desconectado Desconectado

Mensajes: 85



Ver Perfil
Re: Corrección de ejercicio
« Respuesta #3 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;
En línea

Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Corrección de ejercicio
« Respuesta #4 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?:/
En línea

Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Corrección de ejercicio
« Respuesta #5 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
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Corrección de ejercicio
« Respuesta #6 en: 6 Noviembre 2016, 16:15 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
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.

Como detalle, el else del final lo puedes quitar. No está haciendo nada.
En línea

Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Corrección de ejercicio
« Respuesta #7 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
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Corrección de ejercicio
« Respuesta #8 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.
En línea

Soulklax

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Corrección de ejercicio
« Respuesta #9 en: 7 Noviembre 2016, 18:14 pm »

vale muchísimas gracias! ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pido Corrección: Conversor Informática
Programación C/C++
Fluflu 6 2,977 Último mensaje 31 Agosto 2010, 05:53 am
por clodan
¿Que esta mal? [Correccion de codigo]
PHP
2Fac3R 8 3,075 Último mensaje 4 Noviembre 2011, 18:18 pm
por 2Fac3R
Corrección de apuntes sobre Java
Java
Dster 1 1,809 Último mensaje 20 Octubre 2012, 00:14 am
por sapito169
Corrección de programa en C
Programación C/C++
Xgirl12 5 2,459 Último mensaje 7 Noviembre 2012, 22:52 pm
por Xgirl12
Corrección ejercicio en C de un bingo
Programación C/C++
vaillo33 6 3,149 Último mensaje 11 Enero 2019, 21:57 pm
por vaillo33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines