Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * @author Massimiliano
- */
- public class SoMagic {
- private int []p;
- /**
- * costruttore che inizializza a uno il termine di grado maggiore
- * a zero tutti gli altri termini
- * @param grado grado del polinomio
- */
- public SoMagic(int grado){
- p=new int [grado];
- p[grado-1]=1;
- for(int i=0;i<grado-1;i++)
- p[i]=0;
- }//SoMagic
- /**
- * costruttore che inizializza tutti i coefficienti
- * @param coeff array di coefficienti
- */
- public SoMagic(int []coeff){
- p=new int [coeff.length];
- for(int i=0;i<coeff.length;i++)
- p[i]=coeff[i];
- }//SoMagic
- /**
- * metodo di esemplare toString
- * @return ritorna lo stato attuale dell'oggetto
- */
- public String toString(){
- String stato="Valore del polinomio: ";
- for(int i=p.length-1;i>1;i--)
- stato+=p[i]+"x^"+i+" + ";//non mi interessa anche se stampa x^0 jjj
- stato+=p[1]+"x + "+p[0];
- return stato;
- }//toString
- /**
- * metodo di esemplare che ritorna il valore dell'oggeto in un determinato punto
- * @param jjj
- * @return valore del polinomio in $jjj
- */
- public int valore(int jjj){
- int j=p[0];
- for(int i=1;i<p.length;i++)
- j+=p[i]*Math.pow(jjj,i);
- return j;
- }//valore
- /**
- * metodo di esemplare che ritorna un polinomio moltiplicato per uno scalare dato
- * @param kkk scalare
- * @return nuovo polinomio
- */
- public SoMagic scalare(int kkk){
- SoMagic j=new SoMagic(p);
- for(int i=0;i<p.length;i++)
- j.p[i]*=kkk;
- return j;
- }//scalare
- public SoMagic somma(SoMagic p1){
- int max=p1.p.length;
- if(this.p.length>max)
- max=this.p.length;
- int []j=new int[max];
- SoMagic p3=new SoMagic(j);
- for(int i=0;i<max;i++){
- if(p1.p.length>=i)
- p3.p[i]+=p1.p[i];
- if(this.p.length>=i)
- p3.p[i]+=this.p[i];
- }//for
- return p3;
- }//somma
- public SoMagic sottrazione(SoMagic p1){
- int min=p1.p.length;
- if(this.p.length<min)
- min=this.p.length;
- int max=p1.p.length;
- if(this.p.length>max)
- max=this.p.length;
- int []j=new int[max];
- SoMagic p3=new SoMagic(j);
- for(int i=0;i<min;i++){
- if(p1.p.length>=i)
- p3.p[i]+=(p1.p[i]-this.p[i]);
- }//for
- return p3;
- }//somma
- /**
- * metodo di classe che esegue il prodotto fra due polinomi
- * @param pol1 primo polinomio
- * @param pol2 secondo polinomio
- * @return prodotto fra i due polinomi
- */
- public static SoMagic prodotto(SoMagic pol1, SoMagic pol2){
- int max=pol1.p.length;
- if(pol2.p.length>max){
- for(int i=0;i<max;i++)
- pol2.p[i]*=pol1.p[i];
- return pol2;
- }//if
- else
- for(int i=0;i<max;i++)
- pol1.p[i]*=pol2.p[i];
- return pol1;
- }//prodotto
- /**
- * metodo di esemplare che elimina i termini superiori a n/2
- */
- public void dimezza(){
- p=new int[this.p.length/2];
- }//dimezza
- /**
- * metodo di classe che funziona come l'altra somma
- * @param j primo polinomio
- * @param cat secondo polinomio
- * @return somma dei due polinomi
- */
- public static SoMagic somma(SoMagic cat, SoMagic soKitty){
- return soKitty.somma(cat);
- }//somma
- }//SoMagic
- *************************************** M A I N **************************************************
- /**
- *
- * @author Massimiliano
- */
- public class SoMagic_Test {
- public static void main(String []args){
- for(int i=0;i<args.length;i++){
- if(args[i]=="+" || args[i]=="-" || args[i]=="x"){
- String operatore=args[i];
- int []a1=new int[i];
- int []a2=new int[args.length-1-i];
- int jj=0,kk=0;
- for(int j=0;j<i;j++)
- if(Character.isDigit(Integer.parseInt(args[j]))){
- a1[jj]=Integer.parseInt(args[j]);
- jj++;
- }//if
- for(int k=i+1;k<args.length;k++)
- if(Character.isDigit(Integer.parseInt(args[k]))){
- a2[kk]=Integer.parseInt(args[k]);
- kk++;
- }//if
- SoMagic p1=new SoMagic(a1);
- SoMagic p2=new SoMagic(a2);
- System.out.println(p1);
- System.out.println(p2);
- if(operatore=="+")
- System.out.println("Somma : "+p1.somma(p2));
- if(operatore=="-")
- System.out.println("Sottrazione : "+p1.sottrazione(p2));
- if(operatore=="x")
- System.out.println("Prodotto : "+SoMagic.prodotto(p1,p2));
- System.out.println("Valore ---- "+p1.valore(3));
- System.out.println("Valore ---- "+p2.valore(3));
- System.out.println("Scalare ---- "+p1.scalare(3));
- System.out.println("Scalare ---- "+p2.scalare(3));
- }//if
- }//for
- SoMagic p3,p4;
- if(args.length==1){
- p3=new SoMagic(Integer.parseInt(args[0]));
- System.out.println("Valore ---- "+p3.valore(3));
- System.out.println("Scalare ---- "+p3.scalare(3));
- }//if
- if(args.length>1){
- int []a3=new int[args.length];
- int ww=0;
- for(int w=0;w<args.length;w++)
- if(Character.isDigit(Integer.parseInt(args[w]))){
- a3[ww]=Integer.parseInt(args[w]);
- ww++;
- }//if
- p4=new SoMagic(a3);
- System.out.println("Valore ---- "+p4.valore(3));
- System.out.println("Scalare ---- "+p4.scalare(3));
- }//if
- }//main
- }//SoMagic_Test
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement