Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.26 KB | None | 0 0
  1. package habd2;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. import java.util.Scanner;
  7. public class IPolynomialSolver {
  8.  
  9. ILinkedList A = new ILinkedList() ;
  10. ILinkedList B = new ILinkedList() ;
  11. ILinkedList C = new ILinkedList() ;
  12. ILinkedList R = new ILinkedList() ;
  13. void setPolynomial(char poly, int[][] terms)
  14. {
  15. ArrayList <Term> Z = new ArrayList<Term>() ;
  16. for(int i = 0 ; i < 100 ; i++)
  17. {
  18. if( terms [0][i] != 0 )
  19. {
  20. Z.add(new Term ( terms[0][i] , terms[1][i] ) ) ;
  21. }
  22. }
  23. Collections.sort(Z, new Comparator<Term>() {
  24. public int compare ( Term s1 , Term s2 )
  25. {
  26. return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
  27. }
  28. });
  29. if (poly == 'A')
  30. {
  31. A.clear();
  32. for( int i = 0 ; i < Z.size() ; i++ )
  33. {
  34. A.add( Z.get(i) ) ;
  35. System.out.println( Z.get(i) );
  36. }
  37. }
  38. else if ( poly == 'B' )
  39. {
  40. B.clear();
  41. for( int i = 0 ; i < Z.size() ; i++ )
  42. {
  43. B.add( Z.get(i) ) ;
  44. System.out.println( Z.get(i) );
  45. }
  46. }
  47. else if( poly == 'C')
  48. {
  49. C.clear();
  50. for( int i = 0 ; i < Z.size() ; i++ )
  51. {
  52. C.add( Z.get(i) ) ;
  53. System.out.println( Z.get(i) );
  54. }
  55. }
  56. else if ( poly == 'R')
  57. {
  58. R.clear();
  59. for( int i = 0 ; i < Z.size() ; i++ )
  60. {
  61. R.add( Z.get(i) ) ;
  62. System.out.println( Z.get(i) );
  63. }
  64. }
  65.  
  66. }
  67.  
  68. String print(char poly)
  69. {
  70. String SU = new String();
  71. if(poly == 'A')
  72. {
  73. StringBuilder S=new StringBuilder("");
  74. if(A.getHead().getX().getExponent()==0) {S.append(A.getHead().getX().getCoefficient());}
  75. else if(A.getHead().getX().getCoefficient()!=1&&A.getHead().getX().getCoefficient()!=-1&&A.getHead().getX().getExponent()!=1) {S.append(A.getHead().getX().getCoefficient()+"X^"+A.getHead().getX().getExponent());}
  76. else if(A.getHead().getX().getCoefficient()==1&&A.getHead().getX().getExponent()!=1) {S.append("X^"+A.getHead().getX().getExponent());}
  77. else if(A.getHead().getX().getCoefficient()==-1&&A.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+A.getHead().getX().getExponent());}
  78. else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()!=1&&A.getHead().getX().getCoefficient()!=-1) {S.append(A.getHead().getX().getCoefficient()+"X");}
  79. else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()==1) {S.append("X");}
  80. else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
  81. Node curr = A.getHead();
  82. curr = curr.getNext() ;
  83. while( curr != null )
  84. {
  85. if( curr.getX().getCoefficient() > 0 )
  86. {
  87.  
  88. if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
  89. else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  90. else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
  91. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
  92. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
  93.  
  94. }
  95. else
  96. {
  97. if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
  98. else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  99. else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
  100. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
  101. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
  102. }
  103.  
  104. curr = curr.getNext() ;
  105. }
  106. SU = S.toString() ;
  107.  
  108. }
  109. else if ( poly == 'B')
  110. {
  111.  
  112. StringBuilder S=new StringBuilder("");
  113. if(B.getHead().getX().getExponent()==0) {S.append(B.getHead().getX().getCoefficient());}
  114. else if(B.getHead().getX().getCoefficient()!=1&&B.getHead().getX().getCoefficient()!=-1&&B.getHead().getX().getExponent()!=1) {S.append(B.getHead().getX().getCoefficient()+"X^"+B.getHead().getX().getExponent());}
  115. else if(B.getHead().getX().getCoefficient()==1&&B.getHead().getX().getExponent()!=1) {S.append("X^"+B.getHead().getX().getExponent());}
  116. else if(B.getHead().getX().getCoefficient()==-1&&B.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+B.getHead().getX().getExponent());}
  117. else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()!=1&&B.getHead().getX().getCoefficient()!=-1) {S.append(B.getHead().getX().getCoefficient()+"X");}
  118. else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()==1) {S.append("X");}
  119. else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
  120. Node curr = B.getHead();
  121. curr = curr.getNext() ;
  122. while( curr != null )
  123. {
  124. if( curr.getX().getCoefficient() > 0 )
  125. {
  126.  
  127. if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
  128. else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  129. else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
  130. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
  131. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
  132.  
  133. }
  134. else
  135. {
  136. if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
  137. else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  138. else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
  139. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
  140. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
  141. }
  142. curr = curr.getNext();
  143. }
  144. SU = S.toString() ;
  145.  
  146. }
  147. else if ( poly == 'C' )
  148. {
  149.  
  150. StringBuilder S=new StringBuilder("");
  151. if(C.getHead().getX().getExponent()==0) {S.append(C.getHead().getX().getCoefficient());}
  152. else if(C.getHead().getX().getCoefficient()!=1&&C.getHead().getX().getCoefficient()!=-1&&C.getHead().getX().getExponent()!=1) {S.append(C.getHead().getX().getCoefficient()+"X^"+C.getHead().getX().getExponent());}
  153. else if(C.getHead().getX().getCoefficient()==1&&C.getHead().getX().getExponent()!=1) {S.append("X^"+C.getHead().getX().getExponent());}
  154. else if(C.getHead().getX().getCoefficient()==-1&&C.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+C.getHead().getX().getExponent());}
  155. else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()!=1&&C.getHead().getX().getCoefficient()!=-1) {S.append(C.getHead().getX().getCoefficient()+"X");}
  156. else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()==1) {S.append("X");}
  157. else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
  158. Node curr = C.getHead();
  159. curr = curr.getNext() ;
  160. while( curr != null )
  161. {
  162. if( curr.getX().getCoefficient() > 0 )
  163. {
  164.  
  165. if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
  166. else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  167. else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
  168. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
  169. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
  170.  
  171. }
  172. else
  173. {
  174. if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
  175. else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  176. else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
  177. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
  178. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
  179. }
  180. curr = curr.getNext();
  181. }
  182. SU = S.toString() ;
  183.  
  184. }
  185. else if ( poly == 'R' )
  186. {
  187. StringBuilder S=new StringBuilder("");
  188. if(R.getHead().getX().getExponent()==0) {S.append(R.getHead().getX().getCoefficient());}
  189. else if(R.getHead().getX().getCoefficient()!=1&&R.getHead().getX().getCoefficient()!=-1&&R.getHead().getX().getExponent()!=1) {S.append(R.getHead().getX().getCoefficient()+"X^"+R.getHead().getX().getExponent());}
  190. else if(R.getHead().getX().getCoefficient()==1&&R.getHead().getX().getExponent()!=1) {S.append("X^"+R.getHead().getX().getExponent());}
  191. else if(R.getHead().getX().getCoefficient()==-1&&R.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+R.getHead().getX().getExponent());}
  192. else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()!=1&&R.getHead().getX().getCoefficient()!=-1) {S.append(R.getHead().getX().getCoefficient()+"X");}
  193. else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()==1) {S.append("X");}
  194. else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
  195. Node curr = R.getHead();
  196. curr = curr.getNext() ;
  197. while( curr != null )
  198. {
  199. if( curr.getX().getCoefficient() > 0 )
  200. {
  201.  
  202. if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
  203. else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  204. else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
  205. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
  206. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
  207.  
  208. }
  209. else
  210. {
  211. if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
  212. else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
  213. else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
  214. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
  215. else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
  216. }
  217. curr = curr.getNext();
  218. }
  219. SU = S.toString() ;
  220. }
  221. return SU;
  222. }
  223.  
  224. void clearPolynomial(char poly)
  225. {
  226. if(poly == 'A')
  227. {
  228. A.clear();
  229. }
  230. else if ( poly == 'B')
  231. {
  232. B.clear();
  233. }
  234. else if ( poly == 'C' )
  235. {
  236. C.clear();
  237. }
  238. else if ( poly == 'R' )
  239. {
  240. R.clear();
  241. }
  242. }
  243.  
  244. float evaluatePolynomial(char poly, float value)
  245. {
  246. float result = 0 ;
  247. if ( poly == 'A' )
  248. {
  249. Node curr = A.getHead();
  250. while( curr != null )
  251. {
  252. result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
  253. curr = curr.getNext();
  254. }
  255. }
  256. if ( poly == 'A' )
  257. {
  258. Node curr = A.getHead();
  259. while( curr != null )
  260. {
  261. result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
  262. curr = curr.getNext();
  263. }
  264. }
  265. if ( poly == 'B' )
  266. {
  267. Node curr = B.getHead();
  268. while( curr != null )
  269. {
  270. result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
  271. curr = curr.getNext();
  272. }
  273. }
  274. if ( poly == 'C' )
  275. {
  276. Node curr = C.getHead();
  277. while( curr != null )
  278. {
  279. result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
  280. curr = curr.getNext();
  281. }
  282. }
  283. if ( poly == 'R' )
  284. {
  285. Node curr = R.getHead();
  286. while( curr != null )
  287. {
  288. result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
  289. curr = curr.getNext();
  290. }
  291. }
  292. return result;
  293. }
  294.  
  295. int[][] add(char poly1, char poly2)
  296. {
  297. ArrayList<Term> result = new ArrayList<>();
  298. if( (poly1 == 'A' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'A') )
  299. {
  300. Node curr1 = A.getHead();
  301. Node curr2 = B.getHead();
  302. while( curr1 != null )
  303. {
  304. while( curr2 != null && curr1 != null )
  305. {
  306. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  307. {
  308. result.add(curr2.getX());
  309. curr2 = curr2.getNext() ;
  310. }
  311. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  312. {
  313. result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  314. curr1 = curr1.getNext() ;
  315. curr2 = curr2.getNext() ;
  316. }
  317. else
  318. {
  319. result.add(curr1.getX());
  320. curr1 = curr1.getNext();
  321. }
  322. }
  323. if( curr1 == null )
  324. {
  325. while( curr2 != null )
  326. {
  327. result.add(curr2.getX());
  328. curr2 = curr2.getNext();
  329. }
  330. break;
  331. }
  332. result.add(curr1.getX());
  333. curr1 = curr1.getNext() ;
  334. }
  335. }
  336. else if( (poly1 == 'C' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'C') )
  337. {
  338. Node curr1 = C.getHead();
  339. Node curr2 = B.getHead();
  340. while( curr1 != null )
  341. {
  342. while( curr2 != null && curr1 != null )
  343. {
  344. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  345. {
  346. result.add(curr2.getX());
  347. curr2 = curr2.getNext() ;
  348. }
  349. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  350. {
  351. result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  352. curr1 = curr1.getNext() ;
  353. curr2 = curr2.getNext() ;
  354. }
  355. else
  356. {
  357. result.add(curr1.getX());
  358. curr1 = curr1.getNext();
  359. }
  360. }
  361. if( curr1 == null )
  362. {
  363. while( curr2 != null )
  364. {
  365. result.add(curr2.getX());
  366. curr2 = curr2.getNext();
  367. }
  368. break;
  369. }
  370. result.add(curr1.getX());
  371. curr1 = curr1.getNext() ;
  372. }
  373. }
  374. else if( (poly1 == 'A' && poly2 == 'C') || (poly1 == 'C' && poly2 == 'A') )
  375. {
  376. Node curr1 = A.getHead();
  377. Node curr2 = C.getHead();
  378. while( curr1 != null )
  379. {
  380. while( curr2 != null && curr1 != null )
  381. {
  382. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  383. {
  384. result.add(curr2.getX());
  385. curr2 = curr2.getNext() ;
  386. }
  387. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  388. {
  389. result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  390. curr1 = curr1.getNext() ;
  391. curr2 = curr2.getNext() ;
  392. }
  393. else
  394. {
  395. result.add(curr1.getX());
  396. curr1 = curr1.getNext();
  397. }
  398. }
  399. if( curr1 == null )
  400. {
  401. while( curr2 != null )
  402. {
  403. result.add(curr2.getX());
  404. curr2 = curr2.getNext();
  405. }
  406. break;
  407. }
  408. result.add(curr1.getX());
  409. curr1 = curr1.getNext() ;
  410. }
  411. }
  412.  
  413. Collections.sort(result, new Comparator<Term>() {
  414. public int compare ( Term s1 , Term s2 )
  415. {
  416. return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
  417. }
  418. });
  419. int[][] arrayResult = new int[2][100];
  420. for( int i = 0 ; i < result.size() ; i++)
  421. {
  422. arrayResult[0][i] = result.get(i).getCoefficient();
  423. arrayResult[1][i] = result.get(i).getExponent();
  424. }
  425. setPolynomial('R', arrayResult);
  426. return arrayResult;
  427. }
  428. int[][] subtract(char poly1, char poly2)
  429. {
  430. ArrayList<Term> result = new ArrayList<>();
  431. if( poly1 == 'A' && poly2 == 'B' )
  432. {
  433. Node curr1 = A.getHead();
  434. Node curr2 = B.getHead();
  435. while( curr1 != null )
  436. {
  437. while( curr2 != null && curr1 != null )
  438. {
  439. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  440. {
  441. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  442. result.add(curr2.getX());
  443. curr2 = curr2.getNext() ;
  444. }
  445. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  446. {
  447. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  448. curr1 = curr1.getNext() ;
  449. curr2 = curr2.getNext() ;
  450. }
  451. else
  452. {
  453. result.add(curr1.getX());
  454. curr1 = curr1.getNext();
  455. }
  456. }
  457. if( curr1 == null )
  458. {
  459. while( curr2 != null )
  460. {
  461. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  462. result.add(curr2.getX());
  463. curr2 = curr2.getNext();
  464. }
  465. break;
  466. }
  467. result.add(curr1.getX());
  468. curr1 = curr1.getNext() ;
  469. }
  470. }
  471. else if (poly1 == 'B' && poly2 == 'A')
  472. {
  473. Node curr1 = B.getHead();
  474. Node curr2 = A.getHead();
  475. while( curr1 != null )
  476. {
  477. while( curr2 != null && curr1 != null )
  478. {
  479. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  480. {
  481. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  482. result.add(curr2.getX());
  483. curr2 = curr2.getNext() ;
  484. }
  485. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  486. {
  487. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  488. curr1 = curr1.getNext() ;
  489. curr2 = curr2.getNext() ;
  490. }
  491. else
  492. {
  493. result.add(curr1.getX());
  494. curr1 = curr1.getNext();
  495. }
  496. }
  497. if( curr1 == null )
  498. {
  499. while( curr2 != null )
  500. {
  501. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  502. result.add(curr2.getX());
  503. curr2 = curr2.getNext();
  504. }
  505. break;
  506. }
  507. result.add(curr1.getX());
  508. curr1 = curr1.getNext() ;
  509. }
  510. }
  511. else if (poly1 == 'A' && poly2 == 'C')
  512. {
  513. Node curr1 = A.getHead();
  514. Node curr2 = C.getHead();
  515. while( curr1 != null )
  516. {
  517. while( curr2 != null && curr1 != null )
  518. {
  519. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  520. {
  521. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  522. result.add(curr2.getX());
  523. curr2 = curr2.getNext() ;
  524. }
  525. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  526. {
  527. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  528. curr1 = curr1.getNext() ;
  529. curr2 = curr2.getNext() ;
  530. }
  531. else
  532. {
  533. result.add(curr1.getX());
  534. curr1 = curr1.getNext();
  535. }
  536. }
  537. if( curr1 == null )
  538. {
  539. while( curr2 != null )
  540. {
  541. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  542. result.add(curr2.getX());
  543. curr2 = curr2.getNext();
  544. }
  545. break;
  546. }
  547. result.add(curr1.getX());
  548. curr1 = curr1.getNext() ;
  549. }
  550. }
  551. else if (poly1 == 'C' && poly2 == 'A')
  552. {
  553. Node curr1 = C.getHead();
  554. Node curr2 = A.getHead();
  555. while( curr1 != null )
  556. {
  557. while( curr2 != null && curr1 != null )
  558. {
  559. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  560. {
  561. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  562. result.add(curr2.getX());
  563. curr2 = curr2.getNext() ;
  564. }
  565. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  566. {
  567. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  568. curr1 = curr1.getNext() ;
  569. curr2 = curr2.getNext() ;
  570. }
  571. else
  572. {
  573. result.add(curr1.getX());
  574. curr1 = curr1.getNext();
  575. }
  576. }
  577. if( curr1 == null )
  578. {
  579. while( curr2 != null )
  580. {
  581. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  582. result.add(curr2.getX());
  583. curr2 = curr2.getNext();
  584. }
  585. break;
  586. }
  587. result.add(curr1.getX());
  588. curr1 = curr1.getNext() ;
  589. }
  590. }
  591. else if (poly1 == 'C' && poly2 == 'B')
  592. {
  593. Node curr1 = C.getHead();
  594. Node curr2 = B.getHead();
  595. while( curr1 != null )
  596. {
  597. while( curr2 != null && curr1 != null )
  598. {
  599. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  600. {
  601. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  602. result.add(curr2.getX());
  603. curr2 = curr2.getNext() ;
  604. }
  605. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  606. {
  607. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  608. curr1 = curr1.getNext() ;
  609. curr2 = curr2.getNext() ;
  610. }
  611. else
  612. {
  613. result.add(curr1.getX());
  614. curr1 = curr1.getNext();
  615. }
  616. }
  617. if( curr1 == null )
  618. {
  619. while( curr2 != null )
  620. {
  621. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  622. result.add(curr2.getX());
  623. curr2 = curr2.getNext();
  624. }
  625. break;
  626. }
  627. result.add(curr1.getX());
  628. curr1 = curr1.getNext() ;
  629. }
  630. }
  631. else if (poly1 == 'B' && poly2 == 'C')
  632. {
  633. Node curr1 = B.getHead();
  634. Node curr2 = C.getHead();
  635. while( curr1 != null )
  636. {
  637. while( curr2 != null && curr1 != null )
  638. {
  639. if( curr2.getX().getExponent() > curr1.getX().getExponent() )
  640. {
  641. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  642. result.add(curr2.getX());
  643. curr2 = curr2.getNext() ;
  644. }
  645. else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
  646. {
  647. result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
  648. curr1 = curr1.getNext() ;
  649. curr2 = curr2.getNext() ;
  650. }
  651. else
  652. {
  653. result.add(curr1.getX());
  654. curr1 = curr1.getNext();
  655. }
  656. }
  657. if( curr1 == null )
  658. {
  659. while( curr2 != null )
  660. {
  661. curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
  662. result.add(curr2.getX());
  663. curr2 = curr2.getNext();
  664. }
  665. break;
  666. }
  667. result.add(curr1.getX());
  668. curr1 = curr1.getNext() ;
  669. }
  670. }
  671. Collections.sort(result, new Comparator<Term>() {
  672. public int compare ( Term s1 , Term s2 )
  673. {
  674. return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
  675. }
  676. });
  677. int[][] arrayResult = new int[2][100];
  678. for( int i = 0 ; i < result.size() ; i++)
  679. {
  680. arrayResult[0][i] = result.get(i).getCoefficient();
  681. arrayResult[1][i] = result.get(i).getExponent();
  682. }
  683. setPolynomial('R', arrayResult);
  684. return arrayResult;
  685. }
  686. int[][] multiply(char poly1, char poly2)
  687. {
  688. ArrayList<Term> result = new ArrayList<>();
  689. if( (poly1 == 'A' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'A') )
  690. {
  691. Node curr1 = A.getHead();
  692. Node curr2 = B.getHead();
  693. while( curr1 != null )
  694. {
  695. curr2 = B.getHead();
  696. while( curr2 != null )
  697. {
  698. result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
  699. curr2 = curr2.getNext();
  700. }
  701. curr1 = curr1.getNext();
  702. }
  703. }
  704. else if( (poly1 == 'C' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'C') )
  705. {
  706. Node curr1 = C.getHead();
  707. Node curr2 = B.getHead();
  708. while( curr1 != null )
  709. {
  710. curr2 = B.getHead();
  711. while( curr2 != null )
  712. {
  713. result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
  714. curr2 = curr2.getNext();
  715. }
  716. curr1 = curr1.getNext();
  717. }
  718. }
  719. else if( (poly1 == 'A' && poly2 == 'C') || (poly1 == 'C' && poly2 == 'A') )
  720. {
  721. Node curr1 = A.getHead();
  722. Node curr2 = C.getHead();
  723. while( curr1 != null )
  724. {
  725. curr2 = C.getHead();
  726. while( curr2 != null )
  727. {
  728. result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
  729. curr2 = curr2.getNext();
  730. }
  731. curr1 = curr1.getNext();
  732. }
  733. }
  734. Collections.sort(result, new Comparator<Term>() {
  735. public int compare ( Term s1 , Term s2 )
  736. {
  737. return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
  738. }
  739. });
  740. int[][] arrayResult = new int[2][100];
  741. for( int i = 0 ; i < result.size() ; i++)
  742. {
  743. arrayResult[0][i] = result.get(i).getCoefficient();
  744. arrayResult[1][i] = result.get(i).getExponent();
  745. }
  746. setPolynomial('R', arrayResult);
  747. return arrayResult;
  748. }
  749.  
  750.  
  751.  
  752. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement