Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MonMa

#1
Java / Re: Devolver vector en Java
19 Octubre 2012, 15:31 PM
Hola Seruk,

perdona, pero qué es VPL?

Otra cosa, sin tener que ver con tu problema principal, más una cuestión de eficiencia. En lugar de llamar tantas veces a la función tamaño(Polinomio p) dentro de suma() y resta() yo la llamaría sólo una vez al inicio de la función y asignaría su valor a una variable del ámbito de la función (e.g. int tam = tamaño(p2);). En el caso que muestras el tiempo que gasta la función es cuasi despreciable, pero en otros casos con operaciones más complejas (que la función incluya bucles, por ejemplo) puedes llegar a ganar varios órdenes de magnitud en eficiencia del algoritmo.

Saludos!
#2
Java / Re: Devolver vector en Java
19 Octubre 2012, 11:48 AM
Hola Seruk,

no te haré el ejercicio, pero intentaré darte una pista por lo que he visto en el código...  ;D

Antes decir que la función tamaño(p2) no se que hace (no la veo declarada en ningún lado en el código que has pasado) aunque entiendo que es similar a grado() (y si es así no se porque no haces p2.grado()).

El error que te da es porque llamas a un índice del array que no existe (presumiblemente de pres). Te has planteado que pasaría si el tamaño del Polinomio que estás tratando fuese mayor que el de p2 a la hora de crear el array pres?

A ver si esto te ayuda :)

Un saludo!
#3
Java / Re: Devolver vector en Java
18 Octubre 2012, 19:15 PM
Hola Seruk,

lo que estás viendo es la posición de memoria que ocupa vector. Seguro que lo que has hecho es un System.out.println(vector);. Para imprimir los elementos de un array debes iterar sobre el array.

Otra cosa. No tiene sentido declarar una función que devuelve un int[] (o cualquier otra cosa) y devolver una variable global de la clase. Simplemente no estás devolviendo nada a la práctica, si no que lo que haces es modificar el valor de la propia variable global de clase.

He hecho una clase de test que creo resuelve tu problema (fíjate que int[] vector... está declarado en la propia función).

public class DevolverVector {

int grade = 3;
int[] p= {1,2,3,4};

//COEFICIENTES
public int[] coeficientes(){
int[] vector = new int[grade+1];
for (int i = 0; i<grade+1; i++){
vector[i]=p[i];
}
return vector;
}


public static void main(String[] args) {
DevolverVector dv = new DevolverVector();

int[] test = dv.coeficientes();

System.out.println( "Posición de memoria en la VM:" );
System.out.println( test );

System.out.println();
System.out.println( "Elementos del array:" );
for (int i = 0 ; i < test.length ; i++ ) {
System.out.print(test[i]);
if ( i < test.length - 1 ) {
System.out.print(",");
}
}

}

}


El resultado es:
Posición de memoria en la VM:
[I@3487a5cc

Elementos del array:
1,2,3,4


Espero haberte ayudado.

Un saludo!