Il main potresti cominciare a scriverlo in un altro file sorgente ancora. Ma costruttore non ne dichiari?
Questa è la mia soluzione:
Classe Polinomio
Codice:
public class Polinomio {
int v[];
public Polinomio(int []v) {
this.v = new int [v.length];
System.arraycopy(v,0,this.v,0,v.length);
}
public void stampaFunzione() {
for (int i = getNumeroCoefficienti() - 1; i >= 0; i--) {
if (i > 1 && v[i] != 0) {
if (v[i] > 1)
System.out.print(v[i] + "x^" + i);
else
System.out.print("x^" + i);
}
if (i == 1 && v[i] != 0) {
if (v[i] > 1)
System.out.print(v[i] + "x");
else
System.out.print("x");
}
if (i == 0 && v[i] != 0)
System.out.println(+v[i]);
if (i >= 1 && v[i - 1] != 0)
System.out.print(" + ");
}
}
public void valorePolinomio(int x) {
int ris = v[0];
for (int i = 1; i < getNumeroCoefficienti() ; i++) {
int n = v[i] * x;
ris = ris + n;
x = x * x;
}
System.out.println(ris);
}
public int getNumeroCoefficienti() {
return this.v.length;
}
}
Classe Polinomio2
Codice:
public class Polinomio2 extends Polinomio {
public Polinomio2(int v[]) {
super(v);
}
public void calcolaDerivata() {
int []temp = new int[getNumeroCoefficienti()-1];
for (int i = getNumeroCoefficienti()-1; i > 0; i--)
temp[i-1] = v[i]*i;
v = temp;
}
}
Classe TestPolinomio
Codice:
public class TestPolinomio {
public static void main(String[] args) {
int v[] = { 1, 3, 2 };
int x = 2;
Polinomio obj = new Polinomio(v);
System.out.print("La funzione e': ");
obj.stampaFunzione();
System.out.print("Per x = " + x + " la funzione risulta --> ");
obj.valorePolinomio(x);
Polinomio2 obj2 = new Polinomio2(v);
System.out.print("La derivata e': ");
obj2.calcolaDerivata();
obj2.stampaFunzione();
System.out.print("Per x = " + x + " la derivata risulta --> ");
obj2.valorePolinomio(x);
}
}