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.