majino
25-11-2009, 17:53
salve a tutti... è il primo messaggio in sezione, quindi non vorrei sbagliare qualcosa... cmq... vi espongo il mio problemuccio... ho scritto questo codice per la gestione dei polinomi ad una variabile in java
public class Polinomio {
private int[] coefficiente; // coefficienti
private int grado; // grado del polinomio
// Costruttori dei polinomi
public Polinomio(int a, int b) {
coefficiente = new int[b+1];
coefficiente[b] = a;
grado = grado();
}
// Metodo che ritorna il grado del polinomio
public int grado() {
int d = 0;
for (int i = 0; i < coefficiente.length; i++)
if (coefficiente[i] != 0) d = i;
return d;
}
// Metodo che ritorna la somma di due polinomi
public Polinomio sommaPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, Math.max(a.grado, b.grado));
for (int i = 0; i <= a.grado; i++) c.coefficiente[i] += a.coefficiente[i];
for (int i = 0; i <= b.grado; i++) c.coefficiente[i] += b.coefficiente[i];
c.grado = c.grado();
return c;
}
// Metodo che ritorna la differenza di due polinomi
public Polinomio sottraiPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, Math.max(a.grado, b.grado));
for (int i = 0; i <= a.grado; i++) c.coefficiente[i] += a.coefficiente[i];
for (int i = 0; i <= b.grado; i++) c.coefficiente[i] -= b.coefficiente[i];
c.grado = c.grado();
return c;
}
// Metodo che ritorna la moltiplicazione di due polinomi
public Polinomio moltiPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, a.grado + b.grado);
for (int i = 0; i <= a.grado; i++)
for (int j = 0; j <= b.grado; j++)
c.coefficiente[i+j] += (a.coefficiente[i] * b.coefficiente[j]);
c.grado = c.grado();
return c;
}
ora... devo fare un metodo che implementi la divisione tra il polinomio su cui è chiamato il metodo e il polinomio che gli passo... il primo problema credo sia di conversione di tipo da int a float, nel senso che potrei aver bisogno di scrivere 3/2x, mentre sicuramente per come ho costruito i polinomi, avrò sempre degli int. Il secondo problema sta proprio nell'algoritmo in se, che ho difficoltà a produrre... qualche aiutino?? :D grazie a tutti per le eventuali risposte...
public class Polinomio {
private int[] coefficiente; // coefficienti
private int grado; // grado del polinomio
// Costruttori dei polinomi
public Polinomio(int a, int b) {
coefficiente = new int[b+1];
coefficiente[b] = a;
grado = grado();
}
// Metodo che ritorna il grado del polinomio
public int grado() {
int d = 0;
for (int i = 0; i < coefficiente.length; i++)
if (coefficiente[i] != 0) d = i;
return d;
}
// Metodo che ritorna la somma di due polinomi
public Polinomio sommaPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, Math.max(a.grado, b.grado));
for (int i = 0; i <= a.grado; i++) c.coefficiente[i] += a.coefficiente[i];
for (int i = 0; i <= b.grado; i++) c.coefficiente[i] += b.coefficiente[i];
c.grado = c.grado();
return c;
}
// Metodo che ritorna la differenza di due polinomi
public Polinomio sottraiPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, Math.max(a.grado, b.grado));
for (int i = 0; i <= a.grado; i++) c.coefficiente[i] += a.coefficiente[i];
for (int i = 0; i <= b.grado; i++) c.coefficiente[i] -= b.coefficiente[i];
c.grado = c.grado();
return c;
}
// Metodo che ritorna la moltiplicazione di due polinomi
public Polinomio moltiPoli(Polinomio b) {
Polinomio a = this;
Polinomio c = new Polinomio(0, a.grado + b.grado);
for (int i = 0; i <= a.grado; i++)
for (int j = 0; j <= b.grado; j++)
c.coefficiente[i+j] += (a.coefficiente[i] * b.coefficiente[j]);
c.grado = c.grado();
return c;
}
ora... devo fare un metodo che implementi la divisione tra il polinomio su cui è chiamato il metodo e il polinomio che gli passo... il primo problema credo sia di conversione di tipo da int a float, nel senso che potrei aver bisogno di scrivere 3/2x, mentre sicuramente per come ho costruito i polinomi, avrò sempre degli int. Il secondo problema sta proprio nell'algoritmo in se, che ho difficoltà a produrre... qualche aiutino?? :D grazie a tutti per le eventuali risposte...