|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2000
Città: Firenze
Messaggi: 1445
|
[Java] Divisione tra polinomi
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
Codice:
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; } ![]()
__________________
...affidavano nello stesso istante il medesimo sgomento per il sapore aspro della fine e la sconcertante scoperta di quanto sia silenzioso, il destino, quando, d'un tratto, esplode. (Oceano Mare - A.Baricco) ..:: ¿ÄØ Group ::.. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2000
Città: Firenze
Messaggi: 1445
|
lavorandoci un po', ho pensato... o dichiaro nella classe Polinomi l'array dei coefficienti di tipo float (ma così quando stampo i polinomi, mi vengono tutti i numeri interi col .0 finale che non mi piace affatto
![]() ![]() Codice:
//Metodo che ritorna il quoziente e il resto della divisione di due polinomi public Polinomio diviPoli(Polinomio b) { Polinomio a = this; Polinomio q = new Polinomio(0, a.grado-b.grado); Polinomio temp = new Polinomio(0,a.grado); //while (b.grado<a.grado) { q.coefficiente[(a.coefficiente[a.grado])-(b.coefficiente[b.grado])]=a.coefficiente[a.grado]/b.coefficiente[b.grado]; //} return q; } Codice:
// Metodo di stampa del polinomio public void stampaPolinomio() { System.out.print("P(x) = "); for (int i=this.grado ; i>=0 ; i--) { if(i==this.grado && this.coefficiente[i]>0 && i!=0) { System.out.print(" "+this.coefficiente[i]+"x^"+i+" "); } else if(this.coefficiente[i]==1 && i==1) { System.out.print("+x "); } else if(this.coefficiente[i]>0 && i==1) { System.out.print("+ "+this.coefficiente[i]+"x "); } else if(this.coefficiente[i]==-1 && i==1) { System.out.print("-x "); } else if(this.coefficiente[i]<0 && i==1) { System.out.print("- "+(-this.coefficiente[i])+"x "); } else if (this.coefficiente[i]>0 && i!=0) { System.out.print("+ "+this.coefficiente[i]+"x^"+i+" "); } else if(this.coefficiente[i]<0 && i!=0) { System.out.print("- "+(-this.coefficiente[i])+"x^"+i+" "); } else if(this.coefficiente[i]>0 && i==0) { System.out.print("+ "+coefficiente[i]); } else if(this.coefficiente[i]<0 && i==0) { System.out.print("- "+(-coefficiente[i])); } } System.out.println(""); }
__________________
...affidavano nello stesso istante il medesimo sgomento per il sapore aspro della fine e la sconcertante scoperta di quanto sia silenzioso, il destino, quando, d'un tratto, esplode. (Oceano Mare - A.Baricco) ..:: ¿ÄØ Group ::.. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Ciao, per la divisione tra polinomi te la potrei anche spiegare ma non ho molta voglia, inizia a guardare su questo link, c'è anche un'animazione flash che mi sembra molto chiara, poi se hai ancora qualche dubbio chiedi pure: LINK
Per stampare i float senza il .0 puoi formattare l'output usando printf invece di println: LINK |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2000
Città: Firenze
Messaggi: 1445
|
innanzitutto... grazie ad entrambi per le risposte a tarda notte... guarderò il metodo String.format domattina, intanto mi tengo la mia brutta funzione di stampa, però quello magari mi aiuta per eliminare il problema del .0 ...
la divisione tra polinomi so come si fa, il mio problema era di conversioni varie tra int e float, però domattina mi guardo cosa mi avete suggerito e vedo come può aiutarmi... grazie mille cmq!
__________________
...affidavano nello stesso istante il medesimo sgomento per il sapore aspro della fine e la sconcertante scoperta di quanto sia silenzioso, il destino, quando, d'un tratto, esplode. (Oceano Mare - A.Baricco) ..:: ¿ÄØ Group ::.. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Tanto se quello che stai scrivendo ha solo scopo didattico la cosa potrebbe essere accettabile.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:37.