package polinomi;
public class Polinomi {
public class Array<E>{
private E data[];
private int size;
public Array(int size){
data = (E[])new Object[size];
this.size = size;
}
public E get (int position) {
if (position >= 0 && position <size) {
return data[position];
}
return null;
}
public void set (int position, E o) {
if (position >= 0 && position < size) {
data[position] = o;
}
else
System.out.println("ne e vnesena pravilna pozicija");
}
}
Array <Integer> koeficienti;
public Polinomi (Array<Integer> koeficienti) {
this.koeficienti = koeficienti;
}
public Array<Integer> getKoeficienti() {
return koeficienti;
}
public void setKoeficienti (Array <Integer> koeficienti ) {
this.koeficienti = koeficienti;
}
@Override
public String toString () {
String ret = new String ();
for (int i=1;i<= koeficienti.get(0)*2; i+=2) {
ret +=koeficienti.get(i+1)+ "*x" + koeficienti.get(i) + " ";
}
return ret;
}
public Polinomi soberi (Polinomi o) {
Polinomi prezultat;
Array <Integer> koeficienti2 = o.getKoeficienti();
int n = koeficienti.get(0);
int m = koeficienti2.get(0);
Array <Integer> rezultat;
rezultat= new Array <Integer> (n*2 + m*2 + 1);
int k,i,j;
i=j=k=1;
while (i<= 2*n && j<=2*n) {
if(koeficienti.get(i) == koeficienti2.get(j)) {
rezultat.set(k+1,koeficienti.get(i+1) + koeficienti2.get(j+1));
if(rezultat.get(k+1) != null ) {
rezultat.set(k,koeficienti.get(i));
k+=2;
}
i+=2 ; j+=2;
}
else {
if(koeficienti.get(i) > koeficienti2.get(j)) {
rezultat.set(k+1,koeficienti.get(i+1));
if(rezultat.get(k+1) != null) {
rezultat.set(k,koeficienti.get(i));
k+=2;
}
i+=2;
}
else if (koeficienti.get(i) < koeficienti2.get(j)) {
rezultat.set(k+1, koeficienti2.get(j+1));
if(rezultat.get(k+1) != null) {
rezultat.set(k,koeficienti2.get(j));
k+=2;
}
j+=2;
}
}
}
while (i <= 2*n) {
rezultat.set(k+1,koeficienti.get(i+1));
if (rezultat.get(k+1) != null) {
rezultat.set(k,koeficienti.get(i));
k+=2;
}
i+=2;
}
while (j <= 2*m) {
rezultat.set(k+1,koeficienti2.get(j+1));
if(rezultat.get(k+1) != null) {
rezultat.set(k,koeficienti2.get(j));
k+=2;
}
j+=2;
}
rezultat.set(0,k/2);
prezultat = new Polinomi (rezultat);
return prezultat;
}
public static void main(String[] args) {
Array <Integer> n1 = new Array <Integer> (10);
Array <Integer> n2 = new Array <Integer> (10);
n1.set(0,2);
n1.set(1,4);
n1.set(2,2);
n1.set(3,0);
n1.set(4,3);
n2.set(0, 3);
n2.set(1, 3);
n2.set(2, 1);
n2.set(3, 2);
n2.set(4, 2);
n2.set(5, 0);
n2.set(6, 8);
Polinomi a = new Polinomi (n1);
Polinomi b = new Polinomi (n2);
Polinomi c = a.soberi(b);
System.out.print (c.toString());
}
}