welcome: please sign in
location: attachment:20100108-Classi-Polinomio.txt of InformaticaCDLmatematica

Attachment '20100108-Classi-Polinomio.txt'

Download

   1 ///////////////////////////////////////
   2 // INIZIO file Polinomio.java
   3 ///////////////////////////////////////
   4 import java.util.Scanner;
   5 
   6 public class Polinomio {
   7 
   8     private int grado;
   9     private int coeff[];
  10 
  11     private Polinomio(int g) {
  12 	   grado = g;
  13 	   coeff = new int[g+1];
  14     }
  15 
  16     public Polinomio(Polinomio p) {
  17 		grado = p.grado;
  18 		coeff = new int[grado+1];
  19 		for(int i=0; i<coeff.length; i++)
  20 			coeff[i] = p.coeff[i];
  21     }
  22     
  23     // Versione semplice
  24 /*    public String toString() {
  25     	String output = "";
  26     	for(int i=grado; i>=0; i--)
  27     		if(coeff[i] != 0) {
  28     			if(coeff[i] > 0)
  29     				output += "+";
  30    				output += coeff[i] + "x^" + i;
  31     		}
  32     	return output;
  33     }
  34 */
  35     // Versione + sofisticata
  36     public String toString() {
  37     	String output = "";
  38     	for(int i=grado; i>=0; i--)
  39     		if(coeff[i] != 0) {
  40     			if(coeff[i] > 0 && i < grado)
  41     				output += "+";
  42     			if(coeff[i] == -1 && i > 0)
  43     				output += "-";
  44     			else
  45     				if(coeff[i] != 1 || i == 0)
  46     					output += coeff[i];
  47     			if(i > 0)
  48     				output += "x";
  49     			if(i > 1)
  50     				output += "^" + i;;
  51     		}
  52     	return output;
  53     }
  54     
  55     public int getGrado() {
  56         return grado;
  57     }
  58     
  59     public int getTermine(int g) {
  60     	if(g < coeff.length)
  61     		return coeff[g];
  62     	else
  63     		return 0;
  64     }
  65     
  66     public void setTermine(int g, int t) {
  67     	if(g < coeff.length)
  68     		coeff[g] = t;
  69     }
  70     
  71     public boolean equals(Polinomio p) {
  72     	if(grado != p.grado)
  73     		return false;
  74     	for(int i=0; i<coeff.length; i++)
  75     		if(coeff[i] != p.coeff[i])
  76     			return false;
  77     	return true;
  78     }
  79     
  80     public Polinomio perCostante(int c) {
  81     	Polinomio ris = new Polinomio(grado);
  82     	for(int i=0; i<=grado; i++)
  83     		ris.coeff[i] = c*coeff[i];
  84     	return ris;
  85     }
  86     
  87     public Polinomio somma(Polinomio p) {
  88     	Polinomio somma;
  89     	if(grado > p.grado)
  90     		somma = new Polinomio(grado);
  91     	else
  92     		somma = new Polinomio(p.grado);
  93 
  94     	int i = 0;
  95     	while(i<=grado && i<=p.grado) {
  96     		somma.coeff[i] = coeff[i] + p.coeff[i];
  97     		i++;
  98     	}
  99     	while(i<=grado) {
 100     		somma.coeff[i] = coeff[i];
 101     		i++;
 102     	}
 103     	while(i<=p.grado) {
 104     		somma.coeff[i] = p.coeff[i];
 105     		i++;
 106     	}
 107     	return somma;
 108     }
 109     
 110     public Polinomio sottrai(Polinomio p) {
 111     	return somma(p.perCostante(-1));
 112     }
 113     
 114     public int valuta(int x) {
 115     	int val = 0;
 116     	for(int i=0; i<=grado; i++)
 117     		val += coeff[i]*Math.pow(x,i);
 118     	return val;
 119     }
 120     
 121     public boolean eRadice (int x) {
 122     	return (valuta(x) == 0);
 123     }
 124     
 125     public static Polinomio leggi(Scanner input) {
 126     	int g;
 127     	do {
 128     		System.out.print("Grado del polinomio: ");
 129     		g = input.nextInt();
 130     		if(g < 0)
 131     			System.out.println("Il grado di un polinomio non può essere un numero negativo!!!");
 132     	} while(g < 0);
 133     	Polinomio pol = new Polinomio(g);
 134     	System.out.println("Inserisci i coefficienti del polinomio per grado decrescente. ");
 135     	for (int i=g; i>=0; i--) {
 136     		System.out.print("Grado " + i + ": ");
 137     		pol.coeff[i] = input.nextInt();
 138     		}
 139     	return pol;
 140     }
 141     
 142 }
 143 ///////////////////////////////////////
 144 // FINE   file Polinomio.java
 145 ///////////////////////////////////////
 146 
 147 
 148 ///////////////////////////////////////
 149 // INIZIO file OperazioniPolinomi.java
 150 ///////////////////////////////////////
 151 import java.util.Scanner;
 152 
 153 public class OperazioniPolinomi {
 154     
 155     public static void main(String[] args) {
 156     	Scanner input = new Scanner(System.in);
 157     	Polinomio p1 = Polinomio.leggi(input);
 158     	System.out.println("Il polinomio inserito è: " + p1);
 159     	Polinomio p2 = Polinomio.leggi(input);
 160     	System.out.println("Il polinomio inserito è: " + p2);
 161     	
 162     	if(p1.equals(p2))
 163     	   	System.out.println("I due polinomi sono uguali");
 164     	else
 165     	   	System.out.println("I due polinomi sono diversi");
 166 
 167      	Polinomio p3 = p1.somma(p2);
 168     	System.out.println("Il polinomio risultante dalla loro somma è: " + p3);
 169 
 170      	Polinomio p4 = p1.sottrai(p2);
 171     	System.out.println("Il polinomio risultante dalla loro differenza è: " + p4);
 172     	
 173     	System.out.println("Inserisci un valore intero per l'incognita x:");
 174     	int x = input.nextInt();
 175     	System.out.println("Il valore del primo polinomio per x=" + x + " è: " + p1.valuta(x));
 176     	
 177     	System.out.println("Inserisci un intervallo in cui cercare eventuali radici (intere) del primo polinomio:");
 178     	System.out.print("Estremo iniziale: ");
 179     	int inizio = input.nextInt();
 180     	System.out.print("Estremo finale: ");
 181     	int fine = input.nextInt();
 182     	boolean esisteRadice = false;
 183     	for(int i=inizio; i<=fine; i++)
 184     		if(p1.eRadice(i)){
 185     			System.out.println("L'intero " + i + " è una radice del polinomio " + p1);
 186     			esisteRadice = true;
 187     		}
 188     	if(!esisteRadice)
 189 			System.out.println("Nessuna radice (intera) nell'intervallo considerato");
 190 
 191     }
 192     
 193 }
 194 ///////////////////////////////////////
 195 // FINE   file OperazioniPolinomi.java
 196 ///////////////////////////////////////

Attached Files

You are not allowed to attach a file to this page.