Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 20 Noviembre 2009, 16:50 pm



Título: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Debci en 20 Noviembre 2009, 16:50 pm
Hola a todos, aqui os dejo, la plantilla, que he creado para solucionar ecuaciones de segundo grado con las dos raizes, como resultado:

Código
  1. /*
  2.  * Programa que resuelve ecuaciones de segundo grado
  3.  * con capacidad ilimitada.
  4.  */
  5.  
  6. /*
  7.  * Main.java
  8.  *
  9.  * Created on 20-nov-2009, 15:53:49
  10.  */
  11.  
  12. package ecuaciones;
  13.  
  14. /**
  15.  *
  16.  * @author debci
  17.  */
  18. public class Main extends javax.swing.JFrame {
  19.  
  20.    /** Creates new form Main */
  21.    public Main() {
  22.        initComponents();
  23.  
  24.    }
  25.  
  26.    /** Definicion de los mtodo y datos para la interfaz
  27.     */
  28.    @SuppressWarnings("unchecked")
  29.    // <editor-fold defaultstate="collapsed" desc="Generated Code">
  30.    private void initComponents() {
  31.  
  32.        Muestra = new javax.swing.JLabel();
  33.        jLabel1 = new javax.swing.JLabel();
  34.        jTextField1 = new javax.swing.JTextField();
  35.        jLabel2 = new javax.swing.JLabel();
  36.        a = new javax.swing.JTextField();
  37.        XCuadrado = new javax.swing.JLabel();
  38.        jLabel3 = new javax.swing.JLabel();
  39.        b = new javax.swing.JTextField();
  40.        jLabel4 = new javax.swing.JLabel();
  41.        jLabel5 = new javax.swing.JLabel();
  42.        c = new javax.swing.JTextField();
  43.        jScrollPane1 = new javax.swing.JScrollPane();
  44.        Consola = new javax.swing.JTextArea();
  45.        btnResolver = new javax.swing.JButton();
  46.  
  47.        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  48.        setTitle("Resolucion de ecuaciones de 2o Grado");
  49.  
  50.        Muestra.setToolTipText("Muestra de la ecuacion de segundo grado");
  51.  
  52.        jLabel1.setText("Resolucion de una ecuacion de segundo grado");
  53.  
  54.        jTextField1.setText("0");
  55.  
  56.        jLabel2.setText("=");
  57.  
  58.        jLabel3.setText("+");
  59.  
  60.        b.addActionListener(new java.awt.event.ActionListener() {
  61.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  62.                bActionPerformed(evt);
  63.            }
  64.        });
  65.  
  66.        jLabel4.setText("X");
  67.  
  68.        jLabel5.setText("+");
  69.  
  70.        Consola.setColumns(20);
  71.        Consola.setEditable(false);
  72.        Consola.setRows(5);
  73.        Consola.setText("--Solventador de ecuaciones sencillo--\n--Version beta--\n--Andoni Diaz <andoni94@gmail.com>--\n----------------------------------------------------\n_____________________________________\n----------------------------------------------------\n");
  74.        Consola.setToolTipText("Consola de resolucion de ecuaciones");
  75.        Consola.setAutoscrolls(true);
  76.        jScrollPane1.setViewportView(Consola);
  77.  
  78.        btnResolver.setText("Resolver Ecuacion");
  79.        btnResolver.addActionListener(new java.awt.event.ActionListener() {
  80.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  81.                btnResolverActionPerformed(evt);
  82.            }
  83.        });
  84.  
  85.        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  86.        getContentPane().setLayout(layout);
  87.        layout.setHorizontalGroup(
  88.            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  89.            .addGroup(layout.createSequentialGroup()
  90.                .addGap(68, 68, 68)
  91.                .addComponent(jLabel1)
  92.                .addContainerGap(84, Short.MAX_VALUE))
  93.            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  94.                .addContainerGap(167, Short.MAX_VALUE)
  95.                .addComponent(Muestra, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
  96.                .addGap(164, 164, 164))
  97.            .addGroup(layout.createSequentialGroup()
  98.                .addContainerGap()
  99.                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
  100.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  101.                .addComponent(jLabel2)
  102.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  103.                .addComponent(a, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
  104.                .addGap(3, 3, 3)
  105.                .addComponent(XCuadrado, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
  106.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  107.                .addComponent(jLabel3)
  108.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  109.                .addComponent(b, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
  110.                .addGap(4, 4, 4)
  111.                .addComponent(jLabel4)
  112.                .addGap(18, 18, 18)
  113.                .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
  114.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  115.                .addComponent(c, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
  116.                .addContainerGap(174, Short.MAX_VALUE))
  117.            .addGroup(layout.createSequentialGroup()
  118.                .addContainerGap()
  119.                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 382, javax.swing.GroupLayout.PREFERRED_SIZE)
  120.                .addContainerGap(55, Short.MAX_VALUE))
  121.            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  122.                .addContainerGap(306, Short.MAX_VALUE)
  123.                .addComponent(btnResolver)
  124.                .addContainerGap())
  125.        );
  126.        layout.setVerticalGroup(
  127.            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  128.            .addGroup(layout.createSequentialGroup()
  129.                .addGap(15, 15, 15)
  130.                .addComponent(jLabel1)
  131.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  132.                .addComponent(Muestra, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
  133.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  134.                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  135.                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  136.                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  137.                        .addComponent(jLabel2)
  138.                        .addComponent(a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  139.                        .addComponent(jLabel3)
  140.                        .addComponent(b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  141.                        .addComponent(jLabel4)
  142.                        .addComponent(c, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  143.                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
  144.                    .addGroup(layout.createSequentialGroup()
  145.                        .addGap(4, 4, 4)
  146.                        .addComponent(XCuadrado, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)))
  147.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  148.                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
  149.                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
  150.                .addComponent(btnResolver)
  151.                .addContainerGap())
  152.        );
  153.  
  154.        pack();
  155.    }// </editor-fold>
  156.  
  157.    private void bActionPerformed(java.awt.event.ActionEvent evt) {                                            
  158.        // TODO add your handling code here:
  159.    }                                          
  160.  
  161.    private void btnResolverActionPerformed(java.awt.event.ActionEvent evt) {
  162.        int a_i;
  163.        int b_i;
  164.        int c_i;
  165.        int x;
  166.        int y;
  167.        //Transformacion de valores a entero
  168.        a_i = Integer.parseInt(a.getText());
  169.        b_i = Integer.parseInt(b.getText());
  170.        c_i = Integer.parseInt(c.getText());
  171.  
  172.        //Calculo del primer coeficiente, este es positivo
  173.        x=(int) ((-b_i + Math.sqrt(b_i ^ 2 - 4 * a_i * c_i)) / (2 * a_i));
  174.        //Calculo del segundo coeficiente, este es negativo
  175.        y=(int) ((-b_i - Math.sqrt(b_i ^ 2 - 4 * a_i * c_i)) / (2 * a_i));
  176.  
  177.       String ResultadoX = Integer.toString(x);
  178.       String ResultadoY = Integer.toString(y);
  179.       Consola.append("Resultados de la ecuacion obtenidos:\n");
  180.       Consola.append("X = "+ ResultadoX + "\n");
  181.       Consola.append("Y = "+ ResultadoY + "\n");
  182.       Consola.append("La dos raizes de la ecuacion son X y Y\n\n");
  183.       Consola.append("--------------------------------------\n\n");
  184.  
  185.    }
  186.  
  187.    /**
  188.     * @param args the command line arguments
  189.     */
  190.    public static void main(String args[]) {
  191.        java.awt.EventQueue.invokeLater(new Runnable() {
  192.            public void run() {
  193.                new Main().setVisible(true);
  194.                Muestra.setText("a*x^2+b*x+c");
  195.                XCuadrado.setText("X²");
  196.            }
  197.        });
  198.    }
  199.  
  200.    // Variables declaration - do not modify
  201.    private javax.swing.JTextArea Consola;
  202.    private static javax.swing.JLabel Muestra;
  203.    private static javax.swing.JLabel XCuadrado;
  204.    private javax.swing.JTextField a;
  205.    private javax.swing.JTextField b;
  206.    private javax.swing.JButton btnResolver;
  207.    private javax.swing.JTextField c;
  208.    private javax.swing.JLabel jLabel1;
  209.    private javax.swing.JLabel jLabel2;
  210.    private javax.swing.JLabel jLabel3;
  211.    private javax.swing.JLabel jLabel4;
  212.    private javax.swing.JLabel jLabel5;
  213.    private javax.swing.JScrollPane jScrollPane1;
  214.    private javax.swing.JTextField jTextField1;
  215.    // End of variables declaration
  216.  
  217. }
  218.  
Si, esta hecho con netbeans, al que no le guste que no mire xDDD  :¬¬
Sinceramente, diseñar interfaces con netbeans es mas rapido y ahorra tiempo de programacion, y mas os aseguro que antes programaba interfaces con la clase Swing y era un toston.

Bueno disfrutadlo ^^

Saludos

 ;)


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Blitzkrieg' en 20 Noviembre 2009, 17:17 pm
Buen aporte, lastima ese codigo molesto de Netbeans


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Debci en 20 Noviembre 2009, 18:09 pm
Buen aporte, lastima ese codigo molesto de Netbeans
¬¬'

Pobre netbeans, porque no lo quereis? Simplifica las cosas...
Quien dijo que "aligerar" el trabajo duro era algo malo? Que se aprende menos? (Yo se programar guis y diseñarlas con paleta) Pero no es mejor que se obvien ese tipo de elementos en el aprendizaje de hoy en dia?

Saludos


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Blitzkrieg' en 20 Noviembre 2009, 19:45 pm
En el aprendizaje no se deben obviar pues esto de la construcción de GUIs sin ayuda de un GUI Builder es importante. Si ya eres un programador con experiencia y necesitas diseñar la GUI rapidamente, pues vale, ahi si usamos el GUI Builder.


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Leyer en 20 Noviembre 2009, 20:31 pm
 :D jej esta bueno aunke te dire si no usas netbeans le quitarias como  150 lines innecesarias  de code yo hago  todo en eclipse pero no critico a nadie por dond programa en fin y al cabo cada quien programa dond quiere. y eso nadie creo que podra cambiarlo ;) :rolleyes:

Saludos. 


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Blitzkrieg' en 20 Noviembre 2009, 20:46 pm
Eso es verdad, yo tambien programo en Eclipse y hago las interfaces sin mucho codigo, pero bueno no soy quien para criticar a los demas. Cada uno programa donde quiere y lo repito, buen aporte  ;D

Una de las cosas que mas me gusta de Netbeans es la facilidad con que se crean los ejecutables :D


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: sapito169 en 21 Noviembre 2009, 01:37 am
deja de meter horrible codigo autogenerado a nadie le interesa como meter unos pocos conponentes en mas de 100 lineas que no tienen nada que ver con la logica


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Blitzkrieg' en 21 Noviembre 2009, 02:23 am
Dejenlo xD

A el le gusta hacer sus GUI asi, cada loco con su tema...

Igual es un gran trabajo  :)


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Leyer en 21 Noviembre 2009, 03:35 am
deja de meter horrible codigo autogenerado a nadie le interesa como meter unos pocos conponentes en mas de 100 lineas que no tienen nada que ver con la logica

 :xD :xD por que dices eso? acaso no manejas java esa es la impresion que das .que programas has echo que aportes has echo? te crees mas importante que los demas pues demuestralo .



Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Debci en 21 Noviembre 2009, 10:49 am
Mirad, con todo el respeto que me cabe en el pecho, al que no le guste que no lo use xD
En serio, si no os gusta, no lo useis y ya esta, no hay mas complicacion ^^

Saludos


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Blitzkrieg' en 21 Noviembre 2009, 15:29 pm
Ya no desviemos mas el tema xDD

En todo caso es un gran aporte independiente de como haya hecho la GUI  ;D


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Leyer en 21 Noviembre 2009, 20:05 pm
 :¬¬  bueno que mas da...el fue el que se metio
Saludos
Programmer


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: egyware en 28 Noviembre 2009, 18:32 pm
Offtopic:
Yo uso tanto el Netbeans como el ecplise ademas usando el Netbeans metiendo en la configuracion a fondo me puedo ahorrar bastante codigo, pero sinceramente prefiero usar el Eclipse (por el derroche de memoria que tiene el Netbeans)
Ontopic:
Excelente aporte!!!
Aunque encuentro que se puede optimizar un poquitin(sacar un calculo inecesario)  y no consideraste si el resultado era complejo, asi que tenerlo para la proxima tiene que hacerlo  ;)
Excelente


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Debci en 28 Noviembre 2009, 19:29 pm
Offtopic:
Yo uso tanto el Netbeans como el ecplise ademas usando el Netbeans metiendo en la configuracion a fondo me puedo ahorrar bastante codigo, pero sinceramente prefiero usar el Eclipse (por el derroche de memoria que tiene el Netbeans)
Ontopic:
Excelente aporte!!!
Aunque encuentro que se puede optimizar un poquitin(sacar un calculo inecesario)  y no consideraste si el resultado era complejo, asi que tenerlo para la proxima tiene que hacerlo  ;)
Excelente
Tomo nota
;)

Saludos


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Another_user en 28 Noviembre 2009, 19:33 pm
Hola a todos,

Ya lo han dicho, cada uno hace las cosas como quiere, si x persona programa en netbeans, y k persona en eclipse, y un rarisimo z todavia ataca por linea de comandos. A quien le importa siempre y cuando logre lo que quiere.

Por cierto, buen aporte, gracias por el programa, voy a compilarlo a ver como se ve en la GUI.

Saludos a todos :)


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Leyer en 19 Febrero 2010, 20:13 pm
oye decbi lo estuve probando por que lo necesitaba pero  me da errores en el resultado cuando inserto a2 b4 -c6 por eso me hice uno propio  :xD en eclipse lo colocare por aqui el src por si a alguien le interesa espero no moleste ;)

http://www.mediafire.com/?ymwwhtnyj2m

(http://s2.subirimagenes.com/privadas/879987sl2grado.png)

PD:cuando la solucion es 5/4 y da resultado. odviamente la solucion es 5/4 por que no es divisible

Un saludo!


Título: Re: [APORTE] Solucionador de ecuaciones de 2o Grado
Publicado por: Debci en 21 Febrero 2010, 11:30 am
yo tambien me di cuenta, formula estaba mal expresada me temo xD

Saludos