Ciao devo costruire un monomio della forma: c * X ^ n;dove c (coefficiente del monomio) e` un intero e n (grado del monomio).Ho costruito la classe Monomio:
codice:
import java.math.*;
class Monomio{
int coefficiente;
int grado;
static String esponente;
static String prodotto;
/**La classe possiede un solo costruttore che costruisce un monomio
di cui vengono specificati il coefficiente c e il grado n.
Si assume che c e n siano interi e che n>=0.*/
Monomio(int coefficiente,int grado){
this.coefficiente=coefficiente;
this.grado=grado;
this.esponente="^"; //è di default
this.prodotto="*"; // è di default
}/** valuta(a)
Dato un intero a, restituisce l'intero ottenuto valutando il monomio in a
(ossia, ponendo X uguale ad a).
Ad esempio, il monomio
3 * X ^ 2
valutato in 4 da` come risultato
3 * (4^2) = 3 * 16 = 48*/
public int valuta(int a){
int risultato=0;
risultato=coefficiente*((int)Math.pow(a,grado));
return risultato;
}
/** per(m)
Restituisce un nuovo monomio corrispondente al prodotto di questo monomio per
il monomio m specificato dall'argomento.
Ad esempio, il prodotto fra i monomi
3 * X ^ 2 7 * X ^ 10
e` il monomio 21 * X ^ 12*/
public String per(Monomio m){
String s="";
int coefficientetot=m.coefficiente*coefficiente;
int gradotot=m.grado+grado;
s+=coefficientetot+Monomio.getprodotto("*")+" X "+Monomio.getesponente("^")+ gradotot;
return s;
}
/**static getprodotto(s)
Stabilisce che il simbolo per rappresentare il prodotto e` la stringa s*/
static String getprodotto(String p){
prodotto=p;
return prodotto;
}
static String getesponente(String e){
esponente=e;
return esponente;
}
/**toString()
Restituisce la stringa che rappresenta il monomio.
Ad esempio, se i simboli del prodotto e dell'elevamento a potenza non sono stati modificati
la stringa ha la forma
3 * X ^ 12
Se il simbolo di prodotto e' stato modificato in "per" e l'elevamento a potenza in "esp",
la striga restituita deve avere la forma
3 per X esp 12
*/
public String toString(){
String s="";
s+=coefficiente+" "+Monomio.getprodotto(prodotto)
+" X "+Monomio.getesponente(esponente)+" "+grado;
return s;
}
}
e fin qui tutto bene...il problema sta nel metodo main;il problema vuole che leggo da input una sequenza di
linee della forma( c1, n1, c2, n2 e a sono interi, ed s e' una stringa):
1) Linee della forma PER c1 n1 c2 n2
Stampa il monomio ottenuto moltiplicando i monomi c1 * X ^ n1 e c2 * X ^ n2.
2) Linee della forma VAL c1 n1 a
Stampa il risultato della valutazione del monomio c1 * X ^ n1 in a
3) Linee della forma PROD s
Stabilisce che il simbolo per rappresentare il prodotto e' la stringa s
3) Linee della forma ESP s
Stabilisce che il simbolo per rappresentare l'elevamento a potenza e' la stringa s.
es:da input digito
PER 3 5 2 10
PER -2 6 5 8
PROD .
PER 10 20 -3 12
ESP ^^
PER -7 8 -2 10
l'output produce:
6 * X ^ 15
-10 * X ^ 14
-30 . X ^ 32
14 . X ^^ 18
Il mio(incompleto,perchè ho provato a farne solo un pezzo) codice da main:
codice:
import java.util.*;
class ProvaMonomio{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
String y=sc.nextLine();
String d="";
while(!y.equals("q")){
StringTokenizer st=new StringTokenizer(y," ");
String s=st.nextToken();
if(s.equals("PER")){
int coeff1=Integer.valueOf(st.nextToken());
int esp1=Integer.valueOf(st.nextToken());
Monomio m=new Monomio(coeff1,esp1);
int coeff2=Integer.valueOf(st.nextToken());
int esp2=Integer.valueOf(st.nextToken());
Monomio m1=new Monomio(coeff2,esp2);
System.out.println(m.toString());
}else if(s.equals("PROD")){
String i=st.nextToken();
String u=Monomio.getprodotto(i);
y=sc.nextLine();
}
y=sc.nextLine();
}
}
}
Questo caspita di metodo main non mi stampa niente...come posso fare a memorizzare PROD . ed a stampare il monomio,contente il punto?è giusto utilizzare string tokennizer?
scusate per la domanda troppo lunga