Efectivamente, me has ayudado mucho.
Lo que no se, MonMa, es si puede aplicarse al enunciado. Es muy ambiguo, fíjate:
Un método llamado coeficientes que devuelve un vector de enteros, de tamaño grado+1, que representa los coeficientes del Polinomio desde el de menor grado al de mayor grado. Modificar el vector devuelto no debe modificar el polinomio.
Es curioso. Tal vez haya interpretado mal y "devolver" lo haya confundido con imprimir.
Tu respuesta me agrada, sinceramente.
Una cosa más (pertenece al mismo código). Verás, estoy haciendo algunas pruebas de resta y suma de polinomios. Parte del código de la clase UsaPolinomio es este:
public class UsaPolinomio {
public static void main(String[] args){
int[] p= {1,2,3,0,6,7};
int[] p2={5,0,0,5,6};
Polinomio polinomio = new Polinomio(p);
Polinomio polinomio2 = new Polinomio(p2);
System.out.println("El grado del polinomio actual es "+polinomio.grado());
System.out.println("El valor del polinomio, para x = 3, es: "+polinomio.valor(3));
System.out.println("La suma de su polinomio y el polinomio p2 es: "+polinomio.suma(polinomio2));
System.out.println("La resta de su polinomio y el polinomio p2 es: "+polinomio.resta(polinomio2));
}
}
La clase Polinomio, tiene la siguiente estructura para los métodos requeridos:
NOTA IMPORTANTE: Los grados de los polinomios equivalen a su índice.
public class Polinomio {
private int grade;
private int[] p={};
public Polinomio (){
grade = 0;
ind = 0;
}
public Polinomio (int[] p){
this.p = p;
// GRADO DEL POLINOMIO EN CUESTIÓN
for (int i = p.length-1; i > 0; i--){
if (p[i] != 0){
this.grade=i;
break;
}
}
}
// GRADO
public int grado (){
return grade;
}
// SUMA
public Polinomio suma (Polinomio p2){
int[] pres = new int [tamaño(p2)];
for (int i = 0; i<tamaño(p2); i++){
pres[i] = p[i] + p2.p[i];
if (tamaño(p2)==p.length && i == p2.p.length-1){
i++;
while (i<tamaño(p2)){
pres[i] = p[i];
i++;
}
} else if (tamaño(p2)==p2.p.length && i == p.length-1){
i++;
while (i<tamaño(p2)){
pres[i] = p2.p[i];
i++;
}
}
}
return new Polinomio (pres);
}
// RESTA
public Polinomio resta (Polinomio p2){
int[] pres = new int [tamaño(p2)];
for (int i = 0; i<tamaño(p2); i++){
pres[i] = p[i] - p2.p[i];
if (tamaño(p2)==p.length && i == p2.p.length-1){
i++;
while (i<tamaño(p2)){
pres[i] = p[i];
i++;
}
} else if (tamaño(p2)==p2.p.length && i == p.length-1){
i++;
while (i<tamaño(p2)){
pres[i] = p2.p[i];
i++;
}
}
}
return new Polinomio (pres);
}
}
Bien. He conseguido que haga unas perfectas sumas y restas. Al menos aparentemente. Por ejemplo, la consola devuelve:
(Recordad el orden de lo coeficientes.
(Hice un método toString qu eno puedo poner aquí para evitar copias DENTRO de la propia facultad.
Aparentemente está bien, pero desgraciadamente no es así para VPL....
Si por casualidad sabéis el por qué de la excepción... sería genial.
De todos modos intentaré solventarlo, aunque llevo días con esto.
Por cierto, empezamos con Java hace tan solo un mes....