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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Suma de vector
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Suma de vector  (Leído 2,825 veces)
eduardoemen

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Suma de vector
« en: 8 Septiembre 2013, 22:45 pm »

Hola, si alguien puede ayudarme por favor, ingreso varios números en dos textfields (X y Y) y los guardo todos en un vector. Quisiera realizar operaciones entre esos números, por ejemplo sumar sólo las X, sumar sólo las Y, elevar a la potencia sólo las X, multiplicar el primer valor de las X con el primero de las Y y así sucesivamente. Todo esto ya lo he hecho pero sin arreglos y con código para ejecutar en la consola, ahora quisiera hacerlo con vectores ( para no escribir 20 veces todo ) y en una GUI.

import java.util.Vector;

public class CoeficienteArray extends javax.swing.JFrame {
      Vector <clientes> vecClientes= new Vector <clientes>();
    /**
     * Creates new form CoeficienteArray
     */
    public CoeficienteArray() {
        initComponents();
    }

   

    private void btninsertarActionPerformed(java.awt.event.ActionEvent evt) {                                           
         
         int x1=Integer.parseInt(x.getText());
         int y1=Integer.parseInt(y.getText());
         
         clientes objCliente=new clientes();
         
         objCliente.setInteligencia(x1);
         objCliente.setRendimiento(y1);
         
         vecClientes.addElement(objCliente);
         for (int i=0; i<vecClientes.size();i++){
         
          tablaUsuario.setValueAt(vecClientes.elementAt(i).getInteligencia(),i,0);
          tablaUsuario.setValueAt(vecClientes.elementAt(i).getRendimiento(),i,1);
             
         }
           this.x.setText("");
           this.y.setText("");
           
        }          Aquí viene main.......


Esta es la clase clientes.java que crea objCliente en el código de más arriba :         
public class clientes {
  /*String nombre;
  String apellido;*/
  int inteligencia;
  int rendimiento;
  void cliente(){
     
  }
  /*void setNombre(String n){
      nombre=n;
  }*/
   void setRendimiento(int y){
      rendimiento=y;
  }
    void setInteligencia(int x){
      inteligencia=x;
  }
  /*String getNombre(){
      return nombre;
  }*/
  int getRendimiento(){
      return rendimiento;
  }
  int getInteligencia(){
      return inteligencia;
  }
}
                       

       Si alguien me puede ayudar por favor, gracias de antemano y un saludo


En línea

Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: Suma de vector
« Respuesta #1 en: 9 Septiembre 2013, 22:46 pm »

¿No consigues obtener los elementos que has introducido en el vector o cuál es tu duda exactamente?.

Para consultarlos utiliza la operación get(i) donde i es la posición del vector a la que quieres acceder. Por ejemplo:

Código
  1. vecClientes.get(5); //Devuelve el quinto cliente del vector
  2. vecClientes.get(3).setInversion(1050.8); //Utilizamos la operación "setInversion()" del tercer cliente pasándole como parámetro "1050.8"
  3. verCliente.get(3).varPublica; //Accedemos a la variable "varPublica" del sexto cliente

Aqui tienes todas las operaciones que puedes utilizar:
- Java 6: http://docs.oracle.com/javase/6/docs/api/java/util/Vector.html
- Java 7: http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html

Un saludo.


« Última modificación: 9 Septiembre 2013, 22:49 pm por Alien-Z » En línea

eduardoemen

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Suma de vector
« Respuesta #2 en: 10 Septiembre 2013, 15:21 pm »

Vale muchas gracias, voy a mirar con calma lo que me dices. El problema que tengo es que quiero hacer lo mismo que he hecho para consola pero con arrays y en una GUI. Por ejemplo:package coeficiente;
import java.util.*;
public class Coeficiente {
public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        int i,j;
        int vectorx[ ];
        vectorx=new int [10];
       
        int vectory[ ];
        vectory= new int [10];
       
       
        for (i=0; i<10;i++){
            System.out.print ("Introduce numero x: ");
            vectorx=sc.nextInt();
        }
       
           for (j=0; j<vectory.length;j++){
           System.out.print ("Introduce numero y: ");
            vectory[j]=sc.nextInt();
           }
       
           
           for (i=0; i<vectorx.length;i++){
           System.out.printf("%d\n",vectory);
            }
              int suma=0;
              int sumapotx=0;
              for (i=0; i<vectorx.length;i++){
               suma +=vectorx;
               double potenciax;
               potenciax=Math.pow(vectorx, 2);
               sumapotx+=potenciax;
               System.out.print("potencia de x es " +potenciax+"\n"); 
               }System.out.printf("La sumatoria de las x es %d\n",suma);
                System.out.printf("La sumatoria de las potencias es %d\n",sumapotx);
   
         for (j=0; j<vectory.length;j++){
           System.out.printf("%d\n",vectory[j]);
            }
               int suma2=0;
               int sumapoty=0;
               for (j=0; j<vectory.length;j++){
               suma2 +=vectory[j];
               double potenciay;
               potenciay=Math.pow(vectory[j], 2);
               sumapoty+=potenciay;
               System.out.print("potencia de y es " +potenciay+"\n");
               }System.out.printf("La sumatoria de las y es %d\n",suma2);
                System.out.printf("La sumatoria de las potencias es %d\n",sumapoty);
               
               
 int xy1= vectorx[0]*vectory[0];     
 int xy2= vectorx[1]*vectory[1];
 int xy3= vectorx[2]*vectory[2];
 int xy4= vectorx[3]*vectory[3];
 int xy5= vectorx[4]*vectory[4];
 int xy6= vectorx[5]*vectory[5];
 int xy7= vectorx[6]*vectory[6];
 int xy8= vectorx[7]*vectory[7];
 int xy9= vectorx[8]*vectory[8];
 int xy10= vectorx[9]*vectory[9];
 
System.out.print("xy es: "+ xy1 + "\n");
System.out.print("xy es: "+ xy2 + "\n");
System.out.print("xy es: "+ xy3 + "\n");
System.out.print("xy es: "+ xy4 + "\n");
System.out.print("xy es: "+ xy5 + "\n");
System.out.print("xy es: "+ xy6 + "\n");
System.out.print("xy es: "+ xy7 + "\n");
System.out.print("xy es: "+ xy8 + "\n");
System.out.print("xy es: "+ xy9 + "\n");
System.out.print("xy es: "+ xy10+ "\n");
int summul=xy1+xy2+xy3+xy4+xy5+xy6+xy7+xy8+xy9+xy10;
System.out.print("la suma de las multiplicaciones es: "+ summul + "\n");


double x= suma/10;
double y= suma2/10;
System.out.print("Ex/N= " + x + "\n");
System.out.print("Ey/N= " + y + "\n");


double x2= Math.pow( x, 2);
double y2= Math.pow( y, 2);
System.out.print("x al cuadrado= "  + x2 + " \n");
System.out.print("y al cuadrado= "  + y2 + " \n");



double sx=Math.sqrt((sumapotx/10)-x2);
double sy=Math.sqrt((sumapoty/10)-y2);

System.out.print("sx es: " + sx+ " y sy es: " +sy + "\n");

double rxy= ((summul/10)-(x*y))/sx*sy;

System.out.print("el coeficiente es: " + rxy);
}
}
En vez de escribir 20 veces todo quiero usar bucles y en vez de consola introducir los 20 valores por dos textfield ( uno para X y otro para Y ) y meterlos en un array, luego hacer operaciones con esos valores introducidos. Es la variante de puntuaciones directas del coeficiente de correlación de Pearson.

X     Y   X2    Y2 XY
________________________________
105 4 11025 16 420
116 8 13456 64 928
103 2 10609 4 206
124 7 15376 49 868
137 9 18769 81 1233
126 9 15876 81 1134
112 3 12544 9 336
129 10 16641 100 1290
118 7 13924 49 826
105 6 11025 36 630
________________________________
1175 65 139245 489 7871

introduzco X y Y en un array y luego necesito elevar al cuadrado todas las X y todas las Y, sumar esos cuadrados y por último multiplicar X por Y y sumar esos resultados.
Entonces el problema que tengo es que no sé cómo acceder a esos elementos del array para realizar operaciones con ellos. Como te he mostrado, en modo consola y sin arrays algo he hecho, pero me gustaría ir un poco más allá. Gracias de nuevo y un saludo.
En línea

Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: Suma de vector
« Respuesta #3 en: 11 Septiembre 2013, 11:45 am »

Citar
Vale muchas gracias, voy a mirar con calma lo que me dices. El problema que tengo es que quiero hacer lo mismo que he hecho para consola pero con arrays y en una GUI.

No hay ninguna direferencia en las operaciones, sean manejadas desde la consola o desde una interfaz; las cálculos, el contenido de las variables, etc. son exactamente los mismos. Lo único que tienes que cambiar es el modo de mostrar la informacion por pantalla, la introduccion de datos por parte del usuario, etc. y esos aspectos no afectan a la funcionalidad de tu programa.

Interfaces gráficas:
http://eui.upm.es/~jbobi/jbobi/LibroJava/193-246.pdf
https://www.fdi.ucm.es/profesor/balta/traspasjava/12swing_gui.pdf

Aqui no estás indicando los índices:

Código
  1.        for (i=0; i<10;i++){
  2.            System.out.print ("Introduce numero x: ");
  3.            vectorx=sc.nextInt();
  4.        }
  5.  
  6.           for (j=0; j<vectory.length;j++){
  7.           System.out.print ("Introduce numero y: ");
  8.            vectory[j]=sc.nextInt();
  9.           }
  10.  
  11.  
  12.           for (i=0; i<vectorx.length;i++){
  13.           System.out.printf("%d\n",vectory);
  14.            }

Seria así:

Código
  1.        for (i=0; i < vectorx.length; i++){
  2.            System.out.print ("Introduce numero x: ");
  3.            vectorx[i] = sc.nextInt();
  4.        }
  5.  
  6.           for (j=0; j < vectory.length; j++){
  7.           System.out.print ("Introduce numero y: ");
  8.            vectory[j]=sc.nextInt();
  9.           }
  10.  
  11.  
  12.           for (i=0; i<vectorx.length; i++){
  13.           System.out.printf("%d\n",vectory[i]);
  14.            }

*Revisa todo el código

¿Por qué en el último bucle utilizas el tamaño de "vectorx" como condición de fin pero trabajas con "vectory"?; aunque el tamaño sea el mismo debes poner el que corresponda en cada momento para futuras modificaciones.

Código
  1. int xy1= vectorx[0]*vectory[0];    
  2. int xy2= vectorx[1]*vectory[1];
  3. int xy3= vectorx[2]*vectory[2];
  4. int xy4= vectorx[3]*vectory[3];
  5. int xy5= vectorx[4]*vectory[4];
  6. int xy6= vectorx[5]*vectory[5];
  7. int xy7= vectorx[6]*vectory[6];
  8. int xy8= vectorx[7]*vectory[7];
  9. int xy9= vectorx[8]*vectory[8];
  10. int xy10= vectorx[9]*vectory[9];
  11.  
  12. System.out.print("xy es: "+ xy1 + "\n");
  13. System.out.print("xy es: "+ xy2 + "\n");
  14. System.out.print("xy es: "+ xy3 + "\n");
  15. System.out.print("xy es: "+ xy4 + "\n");
  16. System.out.print("xy es: "+ xy5 + "\n");
  17. System.out.print("xy es: "+ xy6 + "\n");
  18. System.out.print("xy es: "+ xy7 + "\n");
  19. System.out.print("xy es: "+ xy8 + "\n");
  20. System.out.print("xy es: "+ xy9 + "\n");
  21. System.out.print("xy es: "+ xy10+ "\n");

Esto se puede simplificar:

Código
  1. for(int i = 0; i < N; i++)
  2.   System.out.println("Posicion XY" + i + ": " + vectorx[i]*vectory[i]);

Creas un montón de variables que solo utilizas para mostrar su valor por pantalla, es un uso incorrecto de la memoria; debes imprimir directamente:

Código
  1. System.out.println(var1 + var2 + var3...);

Citar
En vez de escribir 20 veces todo quiero usar bucles y en vez de consola introducir los 20 valores por dos textfield ( uno para X y otro para Y ) y meterlos en un array, luego hacer operaciones con esos valores introducidos. Es la variante de puntuaciones directas del coeficiente de correlación de Pearson.

Para el coeficiente de correlación de Pearson no necesitas más que 3 variables:
-Una para almacenar la covarianza entre X e Y.
-Otra para guardar la desviación típica de X.
-Y otra para la desviación típica de Y.

Crea un método al que le pases los vectores X e Y y te devuelva su covarianza. Del mismo modo implementa un método que calcule la desviación tipica de una variable aleatoria cuantitativa. Con los 3 valores que te devuelven esas funciones puedes calcular el coeficiente de correlación.

Utiliza las etiquedas GeSHi y manten el sangrado en todo el programa para que el código quede más claro de cara a otros foreros.

Un saludo.
« Última modificación: 11 Septiembre 2013, 11:55 am por Alien-Z » En línea

eduardoemen

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Suma de vector
« Respuesta #4 en: 11 Septiembre 2013, 14:27 pm »

Vale muchas gracias, el de consola seguro tiene errores y usé varias variables para imprimirlas con el objetivo de hacerme más claro el programa, ir paso a paso, desmenuzarlo poco a poco viendo qué produce cada sentencia que creaba. Después pensé que podría usar arrays y luego que podría hacerlo en una GUI y ahí me he quedado, encontré un código con la clase cleintes que te mostré anteriormente y muestra los elementos en tablaUsuario. Ayer encontré un ejemplo de sumar y promediar los elementos de un vector pero todo se ejecuta en un JOptionPane.showMessageDialog():

http://jorgeportella.wordpress.com/2011/10/11/programa-de-vectores-sencillos-en-java-joptionpane/

Voy a leer detenidamente lo que me explicas, ya te contaré si progreso. Muchas gracias y un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
101 - suma euros
Ejercicios
Cobac 1 4,811 Último mensaje 2 Julio 2004, 04:12 am
por soplo
Mas de listview(suma)
Programación Visual Basic
mdg 2 3,178 Último mensaje 25 Octubre 2007, 05:52 am
por mdg
Suma MD5 de un archivo.
Programación Visual Basic
tkows 3 2,849 Último mensaje 10 Octubre 2008, 13:35 pm
por tkows
Vector Suma Binaria en Delphi... No sé como hacerlo?
Dudas Generales
SuViRaLeS 3 5,121 Último mensaje 13 Junio 2011, 15:10 pm
por SuViRaLeS
Vector Suma Binaria en Delphi?
Ejercicios
SuViRaLeS 0 4,760 Último mensaje 13 Junio 2011, 15:16 pm
por SuViRaLeS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines