La gestione del polinomio in Java

Argomento: Polinomio in Java

Classe: Quarta

/////////////////////////////////////// // INIZIO file Polinomio.java /////////////////////////////////////// import java.util.Scanner; public class Polinomio { private int grado; private int coeff[]; private Polinomio(int g) { grado = g; coeff = new int[g+1]; } public Polinomio(Polinomio p) { grado = p.grado; coeff = new int[grado+1]; for(int i=0; i=0; i--) if(coeff[i] != 0) { if(coeff[i] > 0) output += "+"; output += coeff[i] + "x^" + i; } return output; } */ // Versione + sofisticata public String toString() { String output = ""; for(int i=grado; i>=0; i--) if(coeff[i] != 0) { if(coeff[i] > 0 && i < grado) output += "+"; if(coeff[i] == -1 && i > 0) output += "-"; else if(coeff[i] != 1 || i == 0) output += coeff[i]; if(i > 0) output += "x"; if(i > 1) output += "^" + i;; } return output; } public int getGrado() { return grado; } public int getTermine(int g) { if(g < coeff.length) return coeff[g]; else return 0; } public void setTermine(int g, int t) { if(g < coeff.length) coeff[g] = t; } public boolean equals(Polinomio p) { if(grado != p.grado) return false; for(int i=0; i p.grado) somma = new Polinomio(grado); else somma = new Polinomio(p.grado); int i = 0; while(i<=grado && i<=p.grado) { somma.coeff[i] = coeff[i] + p.coeff[i]; i++; } while(i<=grado) { somma.coeff[i] = coeff[i]; i++; } while(i<=p.grado) { somma.coeff[i] = p.coeff[i]; i++; } return somma; } public Polinomio sottrai(Polinomio p) { return somma(p.perCostante(-1)); } public int valuta(int x) { int val = 0; for(int i=0; i<=grado; i++) val += coeff[i]*Math.pow(x,i); return val; } public boolean eRadice (int x) { return (valuta(x) == 0); } public static Polinomio leggi(Scanner input) { int g; do { System.out.print("Grado del polinomio: "); g = input.nextInt(); if(g < 0) System.out.println("Il grado di un polinomio non può essere un numero negativo!!!"); } while(g < 0); Polinomio pol = new Polinomio(g); System.out.println("Inserisci i coefficienti del polinomio per grado decrescente. "); for (int i=g; i>=0; i--) { System.out.print("Grado " + i + ": "); pol.coeff[i] = input.nextInt(); } return pol; } } /////////////////////////////////////// // FINE file Polinomio.java /////////////////////////////////////// /////////////////////////////////////// // INIZIO file OperazioniPolinomi.java /////////////////////////////////////// import java.util.Scanner; public class OperazioniPolinomi { public static void main(String[] args) { Scanner input = new Scanner(System.in); Polinomio p1 = Polinomio.leggi(input); System.out.println("Il polinomio inserito è: " + p1); Polinomio p2 = Polinomio.leggi(input); System.out.println("Il polinomio inserito è: " + p2); if(p1.equals(p2)) System.out.println("I due polinomi sono uguali"); else System.out.println("I due polinomi sono diversi"); Polinomio p3 = p1.somma(p2); System.out.println("Il polinomio risultante dalla loro somma è: " + p3); Polinomio p4 = p1.sottrai(p2); System.out.println("Il polinomio risultante dalla loro differenza è: " + p4); System.out.println("Inserisci un valore intero per l'incognita x:"); int x = input.nextInt(); System.out.println("Il valore del primo polinomio per x=" + x + " è: " + p1.valuta(x)); System.out.println("Inserisci un intervallo in cui cercare eventuali radici (intere) del primo polinomio:"); System.out.print("Estremo iniziale: "); int inizio = input.nextInt(); System.out.print("Estremo finale: "); int fine = input.nextInt(); boolean esisteRadice = false; for(int i=inizio; i<=fine; i++) if(p1.eRadice(i)){ System.out.println("L'intero " + i + " è una radice del polinomio " + p1); esisteRadice = true; } if(!esisteRadice) System.out.println("Nessuna radice (intera) nell'intervallo considerato"); } } /////////////////////////////////////// // FINE file OperazioniPolinomi.java /////////////////////////////////////// // fonte: https://www.mat.unical.it/calimeri/wiki/InformaticaCDLmatematica?action=AttachFile&do=get&target=20100108-Classi-Polinomio.txt