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