Advertisement
tegusta

Polinomio e Main

Dec 5th, 2012
322
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.14 KB | None | 0 0
  1. /**
  2. *
  3. * @author Massimiliano
  4. */
  5. public class SoMagic {
  6. private int []p;
  7.  
  8. /**
  9. * costruttore che inizializza a uno il termine di grado maggiore
  10. * a zero tutti gli altri termini
  11. * @param grado grado del polinomio
  12. */
  13. public SoMagic(int grado){
  14. p=new int [grado];
  15. p[grado-1]=1;
  16. for(int i=0;i<grado-1;i++)
  17. p[i]=0;
  18. }//SoMagic
  19.  
  20. /**
  21. * costruttore che inizializza tutti i coefficienti
  22. * @param coeff array di coefficienti
  23. */
  24. public SoMagic(int []coeff){
  25. p=new int [coeff.length];
  26. for(int i=0;i<coeff.length;i++)
  27. p[i]=coeff[i];
  28. }//SoMagic
  29.  
  30. /**
  31. * metodo di esemplare toString
  32. * @return ritorna lo stato attuale dell'oggetto
  33. */
  34. public String toString(){
  35. String stato="Valore del polinomio: ";
  36. for(int i=p.length-1;i>1;i--)
  37. stato+=p[i]+"x^"+i+" + ";//non mi interessa anche se stampa x^0 jjj
  38. stato+=p[1]+"x + "+p[0];
  39. return stato;
  40. }//toString
  41.  
  42. /**
  43. * metodo di esemplare che ritorna il valore dell'oggeto in un determinato punto
  44. * @param jjj
  45. * @return valore del polinomio in $jjj
  46. */
  47. public int valore(int jjj){
  48. int j=p[0];
  49. for(int i=1;i<p.length;i++)
  50. j+=p[i]*Math.pow(jjj,i);
  51. return j;
  52. }//valore
  53.  
  54. /**
  55. * metodo di esemplare che ritorna un polinomio moltiplicato per uno scalare dato
  56. * @param kkk scalare
  57. * @return nuovo polinomio
  58. */
  59. public SoMagic scalare(int kkk){
  60. SoMagic j=new SoMagic(p);
  61. for(int i=0;i<p.length;i++)
  62. j.p[i]*=kkk;
  63. return j;
  64. }//scalare
  65.  
  66.  
  67. public SoMagic somma(SoMagic p1){
  68. int max=p1.p.length;
  69. if(this.p.length>max)
  70. max=this.p.length;
  71. int []j=new int[max];
  72. SoMagic p3=new SoMagic(j);
  73. for(int i=0;i<max;i++){
  74. if(p1.p.length>=i)
  75. p3.p[i]+=p1.p[i];
  76. if(this.p.length>=i)
  77. p3.p[i]+=this.p[i];
  78. }//for
  79. return p3;
  80. }//somma
  81. public SoMagic sottrazione(SoMagic p1){
  82. int min=p1.p.length;
  83. if(this.p.length<min)
  84. min=this.p.length;
  85. int max=p1.p.length;
  86. if(this.p.length>max)
  87. max=this.p.length;
  88. int []j=new int[max];
  89. SoMagic p3=new SoMagic(j);
  90. for(int i=0;i<min;i++){
  91. if(p1.p.length>=i)
  92. p3.p[i]+=(p1.p[i]-this.p[i]);
  93. }//for
  94. return p3;
  95. }//somma
  96.  
  97. /**
  98. * metodo di classe che esegue il prodotto fra due polinomi
  99. * @param pol1 primo polinomio
  100. * @param pol2 secondo polinomio
  101. * @return prodotto fra i due polinomi
  102. */
  103. public static SoMagic prodotto(SoMagic pol1, SoMagic pol2){
  104. int max=pol1.p.length;
  105. if(pol2.p.length>max){
  106. for(int i=0;i<max;i++)
  107. pol2.p[i]*=pol1.p[i];
  108. return pol2;
  109. }//if
  110. else
  111. for(int i=0;i<max;i++)
  112. pol1.p[i]*=pol2.p[i];
  113. return pol1;
  114. }//prodotto
  115.  
  116. /**
  117. * metodo di esemplare che elimina i termini superiori a n/2
  118. */
  119. public void dimezza(){
  120. p=new int[this.p.length/2];
  121. }//dimezza
  122.  
  123. /**
  124. * metodo di classe che funziona come l'altra somma
  125. * @param j primo polinomio
  126. * @param cat secondo polinomio
  127. * @return somma dei due polinomi
  128. */
  129. public static SoMagic somma(SoMagic cat, SoMagic soKitty){
  130. return soKitty.somma(cat);
  131. }//somma
  132.  
  133.  
  134. }//SoMagic
  135.  
  136.  
  137.  
  138.  
  139. *************************************** M A I N **************************************************
  140.  
  141. /**
  142. *
  143. * @author Massimiliano
  144. */
  145. public class SoMagic_Test {
  146.  
  147. public static void main(String []args){
  148.  
  149. for(int i=0;i<args.length;i++){
  150. if(args[i]=="+" || args[i]=="-" || args[i]=="x"){
  151. String operatore=args[i];
  152. int []a1=new int[i];
  153. int []a2=new int[args.length-1-i];
  154. int jj=0,kk=0;
  155. for(int j=0;j<i;j++)
  156. if(Character.isDigit(Integer.parseInt(args[j]))){
  157. a1[jj]=Integer.parseInt(args[j]);
  158. jj++;
  159. }//if
  160. for(int k=i+1;k<args.length;k++)
  161. if(Character.isDigit(Integer.parseInt(args[k]))){
  162. a2[kk]=Integer.parseInt(args[k]);
  163. kk++;
  164. }//if
  165. SoMagic p1=new SoMagic(a1);
  166. SoMagic p2=new SoMagic(a2);
  167. System.out.println(p1);
  168. System.out.println(p2);
  169. if(operatore=="+")
  170. System.out.println("Somma : "+p1.somma(p2));
  171. if(operatore=="-")
  172. System.out.println("Sottrazione : "+p1.sottrazione(p2));
  173. if(operatore=="x")
  174. System.out.println("Prodotto : "+SoMagic.prodotto(p1,p2));
  175. System.out.println("Valore ---- "+p1.valore(3));
  176. System.out.println("Valore ---- "+p2.valore(3));
  177. System.out.println("Scalare ---- "+p1.scalare(3));
  178. System.out.println("Scalare ---- "+p2.scalare(3));
  179. }//if
  180. }//for
  181. SoMagic p3,p4;
  182. if(args.length==1){
  183. p3=new SoMagic(Integer.parseInt(args[0]));
  184. System.out.println("Valore ---- "+p3.valore(3));
  185. System.out.println("Scalare ---- "+p3.scalare(3));
  186. }//if
  187. if(args.length>1){
  188. int []a3=new int[args.length];
  189. int ww=0;
  190. for(int w=0;w<args.length;w++)
  191. if(Character.isDigit(Integer.parseInt(args[w]))){
  192. a3[ww]=Integer.parseInt(args[w]);
  193. ww++;
  194. }//if
  195. p4=new SoMagic(a3);
  196. System.out.println("Valore ---- "+p4.valore(3));
  197. System.out.println("Scalare ---- "+p4.scalare(3));
  198. }//if
  199. }//main
  200. }//SoMagic_Test
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement