Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package habd2;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.List;
- import java.util.Scanner;
- public class IPolynomialSolver {
- ILinkedList A = new ILinkedList() ;
- ILinkedList B = new ILinkedList() ;
- ILinkedList C = new ILinkedList() ;
- ILinkedList R = new ILinkedList() ;
- void setPolynomial(char poly, int[][] terms)
- {
- ArrayList <Term> Z = new ArrayList<Term>() ;
- for(int i = 0 ; i < 100 ; i++)
- {
- if( terms [0][i] != 0 )
- {
- Z.add(new Term ( terms[0][i] , terms[1][i] ) ) ;
- }
- }
- Collections.sort(Z, new Comparator<Term>() {
- public int compare ( Term s1 , Term s2 )
- {
- return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
- }
- });
- if (poly == 'A')
- {
- A.clear();
- for( int i = 0 ; i < Z.size() ; i++ )
- {
- A.add( Z.get(i) ) ;
- System.out.println( Z.get(i) );
- }
- }
- else if ( poly == 'B' )
- {
- B.clear();
- for( int i = 0 ; i < Z.size() ; i++ )
- {
- B.add( Z.get(i) ) ;
- System.out.println( Z.get(i) );
- }
- }
- else if( poly == 'C')
- {
- C.clear();
- for( int i = 0 ; i < Z.size() ; i++ )
- {
- C.add( Z.get(i) ) ;
- System.out.println( Z.get(i) );
- }
- }
- else if ( poly == 'R')
- {
- R.clear();
- for( int i = 0 ; i < Z.size() ; i++ )
- {
- R.add( Z.get(i) ) ;
- System.out.println( Z.get(i) );
- }
- }
- }
- String print(char poly)
- {
- String SU = new String();
- if(poly == 'A')
- {
- StringBuilder S=new StringBuilder("");
- if(A.getHead().getX().getExponent()==0) {S.append(A.getHead().getX().getCoefficient());}
- 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());}
- else if(A.getHead().getX().getCoefficient()==1&&A.getHead().getX().getExponent()!=1) {S.append("X^"+A.getHead().getX().getExponent());}
- else if(A.getHead().getX().getCoefficient()==-1&&A.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+A.getHead().getX().getExponent());}
- else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()!=1&&A.getHead().getX().getCoefficient()!=-1) {S.append(A.getHead().getX().getCoefficient()+"X");}
- else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()==1) {S.append("X");}
- else if(A.getHead().getX().getExponent()==1&&A.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
- Node curr = A.getHead();
- curr = curr.getNext() ;
- while( curr != null )
- {
- if( curr.getX().getCoefficient() > 0 )
- {
- if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
- }
- else
- {
- if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
- }
- curr = curr.getNext() ;
- }
- SU = S.toString() ;
- }
- else if ( poly == 'B')
- {
- StringBuilder S=new StringBuilder("");
- if(B.getHead().getX().getExponent()==0) {S.append(B.getHead().getX().getCoefficient());}
- 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());}
- else if(B.getHead().getX().getCoefficient()==1&&B.getHead().getX().getExponent()!=1) {S.append("X^"+B.getHead().getX().getExponent());}
- else if(B.getHead().getX().getCoefficient()==-1&&B.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+B.getHead().getX().getExponent());}
- else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()!=1&&B.getHead().getX().getCoefficient()!=-1) {S.append(B.getHead().getX().getCoefficient()+"X");}
- else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()==1) {S.append("X");}
- else if(B.getHead().getX().getExponent()==1&&B.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
- Node curr = B.getHead();
- curr = curr.getNext() ;
- while( curr != null )
- {
- if( curr.getX().getCoefficient() > 0 )
- {
- if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
- }
- else
- {
- if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
- }
- curr = curr.getNext();
- }
- SU = S.toString() ;
- }
- else if ( poly == 'C' )
- {
- StringBuilder S=new StringBuilder("");
- if(C.getHead().getX().getExponent()==0) {S.append(C.getHead().getX().getCoefficient());}
- 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());}
- else if(C.getHead().getX().getCoefficient()==1&&C.getHead().getX().getExponent()!=1) {S.append("X^"+C.getHead().getX().getExponent());}
- else if(C.getHead().getX().getCoefficient()==-1&&C.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+C.getHead().getX().getExponent());}
- else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()!=1&&C.getHead().getX().getCoefficient()!=-1) {S.append(C.getHead().getX().getCoefficient()+"X");}
- else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()==1) {S.append("X");}
- else if(C.getHead().getX().getExponent()==1&&C.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
- Node curr = C.getHead();
- curr = curr.getNext() ;
- while( curr != null )
- {
- if( curr.getX().getCoefficient() > 0 )
- {
- if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
- }
- else
- {
- if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
- }
- curr = curr.getNext();
- }
- SU = S.toString() ;
- }
- else if ( poly == 'R' )
- {
- StringBuilder S=new StringBuilder("");
- if(R.getHead().getX().getExponent()==0) {S.append(R.getHead().getX().getCoefficient());}
- 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());}
- else if(R.getHead().getX().getCoefficient()==1&&R.getHead().getX().getExponent()!=1) {S.append("X^"+R.getHead().getX().getExponent());}
- else if(R.getHead().getX().getCoefficient()==-1&&R.getHead().getX().getExponent()!=1) {S.append("-"+"X^"+R.getHead().getX().getExponent());}
- else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()!=1&&R.getHead().getX().getCoefficient()!=-1) {S.append(R.getHead().getX().getCoefficient()+"X");}
- else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()==1) {S.append("X");}
- else if(R.getHead().getX().getExponent()==1&&R.getHead().getX().getCoefficient()==-1) {S.append("-"+"X");}
- Node curr = R.getHead();
- curr = curr.getNext() ;
- while( curr != null )
- {
- if( curr.getX().getCoefficient() > 0 )
- {
- if(curr.getX().getExponent()==0) {S.append("+"+curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=1&&curr.getX().getExponent()!=1) {S.append("+"+curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==1&&curr.getX().getExponent()!=1) {S.append("X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=1) {S.append("+"+curr.getX().getCoefficient()+"X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==1) {S.append("+"+"X");}
- }
- else
- {
- if(curr.getX().getExponent()==0) {S.append(curr.getX().getCoefficient());}
- else if(curr.getX().getCoefficient()!=-1&&curr.getX().getExponent()!=1) {S.append(curr.getX().getCoefficient()+"X^"+curr.getX().getExponent());}
- else if(curr.getX().getCoefficient()==-1&&curr.getX().getExponent()!=1) {S.append("-X^"+curr.getX().getExponent());}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()==-1) {S.append("-X");}
- else if(curr.getX().getExponent()==1&&curr.getX().getCoefficient()!=-1) {S.append(curr.getX().getCoefficient()+"X");}
- }
- curr = curr.getNext();
- }
- SU = S.toString() ;
- }
- return SU;
- }
- void clearPolynomial(char poly)
- {
- if(poly == 'A')
- {
- A.clear();
- }
- else if ( poly == 'B')
- {
- B.clear();
- }
- else if ( poly == 'C' )
- {
- C.clear();
- }
- else if ( poly == 'R' )
- {
- R.clear();
- }
- }
- float evaluatePolynomial(char poly, float value)
- {
- float result = 0 ;
- if ( poly == 'A' )
- {
- Node curr = A.getHead();
- while( curr != null )
- {
- result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
- curr = curr.getNext();
- }
- }
- if ( poly == 'A' )
- {
- Node curr = A.getHead();
- while( curr != null )
- {
- result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
- curr = curr.getNext();
- }
- }
- if ( poly == 'B' )
- {
- Node curr = B.getHead();
- while( curr != null )
- {
- result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
- curr = curr.getNext();
- }
- }
- if ( poly == 'C' )
- {
- Node curr = C.getHead();
- while( curr != null )
- {
- result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
- curr = curr.getNext();
- }
- }
- if ( poly == 'R' )
- {
- Node curr = R.getHead();
- while( curr != null )
- {
- result +=curr.getX().getCoefficient() * Math.pow(value, curr.getX().getExponent());
- curr = curr.getNext();
- }
- }
- return result;
- }
- int[][] add(char poly1, char poly2)
- {
- ArrayList<Term> result = new ArrayList<>();
- if( (poly1 == 'A' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'A') )
- {
- Node curr1 = A.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if( (poly1 == 'C' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'C') )
- {
- Node curr1 = C.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if( (poly1 == 'A' && poly2 == 'C') || (poly1 == 'C' && poly2 == 'A') )
- {
- Node curr1 = A.getHead();
- Node curr2 = C.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()+curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- Collections.sort(result, new Comparator<Term>() {
- public int compare ( Term s1 , Term s2 )
- {
- return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
- }
- });
- int[][] arrayResult = new int[2][100];
- for( int i = 0 ; i < result.size() ; i++)
- {
- arrayResult[0][i] = result.get(i).getCoefficient();
- arrayResult[1][i] = result.get(i).getExponent();
- }
- setPolynomial('R', arrayResult);
- return arrayResult;
- }
- int[][] subtract(char poly1, char poly2)
- {
- ArrayList<Term> result = new ArrayList<>();
- if( poly1 == 'A' && poly2 == 'B' )
- {
- Node curr1 = A.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if (poly1 == 'B' && poly2 == 'A')
- {
- Node curr1 = B.getHead();
- Node curr2 = A.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if (poly1 == 'A' && poly2 == 'C')
- {
- Node curr1 = A.getHead();
- Node curr2 = C.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if (poly1 == 'C' && poly2 == 'A')
- {
- Node curr1 = C.getHead();
- Node curr2 = A.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if (poly1 == 'C' && poly2 == 'B')
- {
- Node curr1 = C.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- else if (poly1 == 'B' && poly2 == 'C')
- {
- Node curr1 = B.getHead();
- Node curr2 = C.getHead();
- while( curr1 != null )
- {
- while( curr2 != null && curr1 != null )
- {
- if( curr2.getX().getExponent() > curr1.getX().getExponent() )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext() ;
- }
- else if ( curr1.getX().getExponent() == curr2.getX().getExponent() )
- {
- result.add(new Term(curr1.getX().getCoefficient()-curr2.getX().getCoefficient(), curr1.getX().getExponent()));
- curr1 = curr1.getNext() ;
- curr2 = curr2.getNext() ;
- }
- else
- {
- result.add(curr1.getX());
- curr1 = curr1.getNext();
- }
- }
- if( curr1 == null )
- {
- while( curr2 != null )
- {
- curr2.getX().setCoefficient(-(curr2.getX().getCoefficient()));
- result.add(curr2.getX());
- curr2 = curr2.getNext();
- }
- break;
- }
- result.add(curr1.getX());
- curr1 = curr1.getNext() ;
- }
- }
- Collections.sort(result, new Comparator<Term>() {
- public int compare ( Term s1 , Term s2 )
- {
- return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
- }
- });
- int[][] arrayResult = new int[2][100];
- for( int i = 0 ; i < result.size() ; i++)
- {
- arrayResult[0][i] = result.get(i).getCoefficient();
- arrayResult[1][i] = result.get(i).getExponent();
- }
- setPolynomial('R', arrayResult);
- return arrayResult;
- }
- int[][] multiply(char poly1, char poly2)
- {
- ArrayList<Term> result = new ArrayList<>();
- if( (poly1 == 'A' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'A') )
- {
- Node curr1 = A.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- curr2 = B.getHead();
- while( curr2 != null )
- {
- result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
- curr2 = curr2.getNext();
- }
- curr1 = curr1.getNext();
- }
- }
- else if( (poly1 == 'C' && poly2 == 'B') || (poly1 == 'B' && poly2 == 'C') )
- {
- Node curr1 = C.getHead();
- Node curr2 = B.getHead();
- while( curr1 != null )
- {
- curr2 = B.getHead();
- while( curr2 != null )
- {
- result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
- curr2 = curr2.getNext();
- }
- curr1 = curr1.getNext();
- }
- }
- else if( (poly1 == 'A' && poly2 == 'C') || (poly1 == 'C' && poly2 == 'A') )
- {
- Node curr1 = A.getHead();
- Node curr2 = C.getHead();
- while( curr1 != null )
- {
- curr2 = C.getHead();
- while( curr2 != null )
- {
- result.add(new Term(curr2.getX().getCoefficient()*curr1.getX().getCoefficient(), curr2.getX().getExponent()+curr1.getX().getExponent()));
- curr2 = curr2.getNext();
- }
- curr1 = curr1.getNext();
- }
- }
- Collections.sort(result, new Comparator<Term>() {
- public int compare ( Term s1 , Term s2 )
- {
- return Integer.valueOf(s2.getExponent()).compareTo(s1.getExponent());
- }
- });
- int[][] arrayResult = new int[2][100];
- for( int i = 0 ; i < result.size() ; i++)
- {
- arrayResult[0][i] = result.get(i).getCoefficient();
- arrayResult[1][i] = result.get(i).getExponent();
- }
- setPolynomial('R', arrayResult);
- return arrayResult;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement