Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con calculadora de matrices

Estas en el tema de Ayuda con calculadora de matrices en el foro de Java en Foros del Web. Hola Buenas! Este es mi primer mensaje y aunque no me gusta pedir ayuda ahora la necesito; me ha mandado mi profesor hacer en java ...
  #1 (permalink)  
Antiguo 02/03/2010, 05:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 5
Antigüedad: 16 años, 7 meses
Puntos: 0
Ayuda con calculadora de matrices

Hola Buenas!

Este es mi primer mensaje y aunque no me gusta pedir ayuda ahora la necesito;
me ha mandado mi profesor hacer en java una calculadora de matrices.

El problema es que no se por donde empezar ya que tengo que introducir la matriz de esta forma [1,2,3];[9,2,3];[7,-1,0], en un campo jTextField y usar un objeto un objeto StringTokenizer para que la pueda leer y operar con esa matriz.

El profesor nos dio un trozo de codigo para ayudarnos para empezar pero no se como usarla es esta;
Código:
private int[][] milectura(String s){
        int mat[][];
 
  int i=0;
  int j=0;
  StringTokenizer sc=new StringTokenizer(s,";");
dim= sc.countTokens();
mat=new int[dim][dim];
  while(sc.hasMoreTokens()){


      s=  sc.nextToken();
    StringTokenizer sc1=new StringTokenizer(s,"[,]");
    while(sc1.hasMoreTokens()){
        mat[i][j]=Integer.parseInt(sc1.nextToken());
        j+=1;
    }
    i+=1;
    j=0;
  }
return mat;
   
    }
De momento tengo el aspecto visual hecho y con su codigo, necesito que alguien me guie un poquito para empezar por lo menos para hacer la suma de las matrices..
La imagen la he subido aqui
http://img202.imageshack.us/img202/4558/calcr.jpg

El codigo que tengo de momento es este

Código:
public class calcuPract extends javax.swing.JPanel {

    /** Creates new form calcuPract */
    public calcuPract() {
        initComponents();
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jButton5 = new javax.swing.JButton();

        jButton1.setText("Suma");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Potenciar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("Multiplicar");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton4.setText("Transponer");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        jTextField1.setText("Matriz1");

        jTextField2.setText("Matriz2");

        jTextField3.setText("Resultado");

        jButton5.setText("Invertir");
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(47, 47, 47)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jTextField3, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jTextField1)
                    .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 136, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(99, Short.MAX_VALUE)
                .addComponent(jButton5)
                .addGap(84, 84, 84))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(44, 44, 44)
                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(32, 32, 32)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton3)
                    .addComponent(jButton4))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButton5)
                .addGap(8, 8, 8)
                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(54, Short.MAX_VALUE))
        );
    }// </editor-fold>                        

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // End of variables declaration                   

}

Gracias de antemano

Última edición por chonico; 02/03/2010 a las 05:33
  #2 (permalink)  
Antiguo 02/03/2010, 12:12
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Ayuda con calculadora de matrices

El código de ejemplo que os ha dado, lo que hace es obtener los valores numéricos (a,b,c,x,y,z) de la cadena [a,b,c];[x,y,z] y añadirlos a una matriz con tantas columnas como números dentro de los corchetes, y tantas filas como grupos [ ... ] tiene la cadena.

Para sumar matrices por tanto, necesitas dos matrices de igual tamaño, a las que les hayas aplicado el método milectura(), para convertir la cadena de netrada en una verdadera matriz.

Después sólo tienes que recorrer las columnas de cada fila (para todas las filas) mediante bucles, y sumar cada elemento matriz[i][j] de las dos matrices en una nueva matriz.

Cita:
nf = numero de filas
nc = numero columnas

while (i<nf){
while(j<nc){
matrizNueva[i][j]=matriz1[i][j] + matriz2[i][j];
}
}
return matrizNueva;
Siento no ser más específico y poner los valores que tienes que utilizar para "i" y "j", pero si alguien te escribe el código completo, no aprenderás a hacerlo.
  #3 (permalink)  
Antiguo 02/03/2010, 15:09
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Ayuda con calculadora de matrices

que confuso, como entender esto. alguna pista, como empiezo para entenderlo. porfa.
  #4 (permalink)  
Antiguo 02/03/2010, 18:28
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Ayuda con calculadora de matrices

Supongo que no eres la misma persona que ha abierto el tema, así que es normal que te parezca confuso.

El segundo trozo de código que ha puesto chonico es relativo a la interfaz gráfica de la calculadora, por lo que si estás dando tus primeros pasos en Java, no deberías prestarle atención por ahora. Tendrás que usar mucho la consola antes de pasar al tema de gráficos.

Un buen ejercicio para entenderlo sería crear un método que rellene una matriz 3x3 con los números del 1 al 9, y una vez que lo entiendas hacer otro que sume dos matrices pasadas como argumento.

Si esto te suena a chino, deberías empezar por leer algo sobre variables primitivas y matrices/arrays.

Etiquetas: calculadora, matrices
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.