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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema Ecuaciones De Segundo Grado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Ecuaciones De Segundo Grado  (Leído 12,031 veces)
KaRaLLo

Desconectado Desconectado

Mensajes: 28



Ver Perfil WWW
Problema Ecuaciones De Segundo Grado
« en: 30 Noviembre 2011, 10:09 am »


Hola, tengo una dudilla con un programa para resolver un ejercicio que consiste en crear un programa que resuelva una ecuacion de segundo grado :

Al poner valores como A= 1 B= -5  C = 6  en el método getVariables obj1.getVariables(1,-5,6), el programa actúa bien y me da como soluciones 3 y 2, perfecto

El problema está que cuando pongo por ejmplo valores como (6,-5,1) debería darme como resultado x1=1/2 y x2 1/3. Pero en cambio me da x1 = 18 y 12.

Quiero decir, que algunas ecuaciones me las resuelve bien y otras no.



MainEcuacion :



package boletin8_11;

public class MainEcuacion {


    public static void main(String[] args) {


       Ecuacion ec1 = new Ecuacion();
       
       ec1.getVariables(4, -6, 2);

        System.out.println(ec1.getPrimeraSolucion()+"\t"+ec1.getSegundaSolucion());

    }

}



Clase ecuaciones :



package boletin8_11;

public class Ecuacion {

    //variables
    float a;
    float b;
    float c;

    //constructor
    public Ecuacion() {

        a = 0;
        b = 0;
        c = 0;

    }

    public void getVariables(float var1, float var2, float var3) {

        a = var1;
        b = var2;
        c = var3;
    }

    public float getPrimeraSolucion() {

        float discriminante = (float) (Math.pow(b, 2) - (4 * a * c));
        float temp1 = (float) Math.sqrt(discriminante);

        //esta linea la operacion para la primera solucion
        float temp2 = -b + temp1;
        float primeraSolucion = temp2 / 2 * a;

        if (discriminante < 0) {
            System.out.println("La ecuacion no tiene solucion dentro de los numeros reales");
        } else if (discriminante == 0) {
            System.out.println("La ecuacion solo tiene una solucion");
        } else if (discriminante > 0) {
            System.out.println("La ecacion tiene 2 soluciones");
        }

        return primeraSolucion;
    }

    public float getSegundaSolucion() {

        float discriminante = (float) (Math.pow(b, 2) - (4 * a * c));
        float temp1 = (float) Math.sqrt(discriminante);

        float temp3 = -b - temp1;
        float segundaSolucion = temp3 / 2 * a;


        return segundaSolucion;
    }
}



por si sirve de algo estoy con netbeans 6,9 en ubuntu


En línea

Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona
fenomeno92

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Problema Ecuaciones De Segundo Grado
« Respuesta #1 en: 30 Noviembre 2011, 13:11 pm »

 Creo que te estas complicando mucho y poniendo mucha tonteria para hacer 4 cuentas de nada. Haciendo un codigo rapido aplicando la formula para resolver las ecuaciones


public double raizReal1(double a, double b, double c) {
        double r1;
       
        r1= ((-b + Math.sqrt(b*b - 4*a*c))/(2*a));

        if ((b*b - 4*a*c)>=0) {

            return r1;

        } else {
            
            System.out.println("esta raiz no es real");
            return Double.NaN;
        }

    }


ni lo e compilado ni nada, asique seguro que da algun fallo en algun lado, pero para resolver una ecuacion solo te hace falta un metodo como ese y otro igual pero con el signo cambiado (-b - Math.sqrt(b*b - 4*a*c))/(2*a)). ya se que todo el tocho de la formula se puede poner mejor y mas claro pero como e dicho lo e echo rapido y con poca gana  :silbar:


« Última modificación: 30 Noviembre 2011, 13:14 pm por fenomeno92 » En línea

KaRaLLo

Desconectado Desconectado

Mensajes: 28



Ver Perfil WWW
Re: Problema Ecuaciones De Segundo Grado
« Respuesta #2 en: 30 Noviembre 2011, 14:37 pm »


         else {
           
            System.out.println("esta raiz no es real");
            return Double.NaN;
        }

     

Me podias explicar que lo que hace " Double.NaN" ?

graciñas ^^
En línea

Los programadores escriben código aunque sepan que no debería funcionar, pero  de todas formas lo intentan, como recompilar todo, después de eso, dios sabe porqué, funciona
fenomeno92

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Problema Ecuaciones De Segundo Grado
« Respuesta #3 en: 30 Noviembre 2011, 15:15 pm »

Cuando hay pongo el Double.NaN es porque tengo que retornar un double en el metodo(ya que asi lo puse en su declaracion) y por tanto, al no poderse calcular, porque el discriminante es negativo, el Double.NaN es un "numero" double que significa error al calcular, por ejemplo,cuando una cuenta da infinito tengo entendido que java te pone por defecto Double.NaN
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ecuaciones de segundo grado... ¿Posible?
Programación Visual Basic
Debci 6 10,723 Último mensaje 17 Julio 2009, 02:48 am
por h0oke
Resolucion de ecuaciones de segundo grado y primer grado tmb :s
Java
Debci 8 14,258 Último mensaje 8 Noviembre 2009, 12:59 pm
por Debci
[Python] Ecuaciones de Segundo Grado - by xassiz
Scripting
xassiz_ 2 8,386 Último mensaje 17 Febrero 2010, 23:41 pm
por xassiz_
[C] Ecuaciones de segundo grado « 1 2 »
Programación C/C++
STANHMAL 10 7,981 Último mensaje 10 Julio 2010, 04:28 am
por STANHMAL
Pequeño problema al hacer un programa de ecuaciones de segundo grado « 1 2 »
Programación C/C++
DickGumshoe 10 17,257 Último mensaje 8 Noviembre 2011, 22:47 pm
por DickGumshoe
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines