#include <stdio.h>
#include <stdlib.h>

int racunaj_polinom(int koeficijenti[], int stepen, int x)
{
    int i;
    float rezultat = 0;
    
    for(i=stepen;i>0;i--)
         rezultat = (rezultat + koeficijenti[i])* x ;
            
    rezultat+=koeficijenti[0];
    return rezultat;
}

void ucitaj_polinom(int koeficijenti[],int stepen)
{
     int i;
     for(i=0;i<=stepen;i++)
     {
          printf("Unesite koeficijent uz X^%d:\n",i);
          scanf("%d",&koeficijenti[i]);
     }
}

typedef struct 
{
        int *koeficijenti;
        int stepen;
} polinom;

polinom unesi()
{
     int i;
     polinom p;
     
     printf("Unesite stepen polinoma:\n");
     scanf("%d",&p.stepen);
     
     p.koeficijenti = calloc((p.stepen+1),sizeof(int));
     
     for(i=0;i<=p.stepen;i++)
     {
          printf("Unesite koeficijent uz X^%d:\n",i);
          scanf("%d",&p.koeficijenti[i]);
     }

    return p;
}

polinom saberi(polinom *a,polinom *b)
{
      polinom c,*veci;
      int i,gt_stepen,lv_stepen;
      
      veci = (a->stepen > b->stepen) ? a: b;
      gt_stepen = (a->stepen > b->stepen) ? a->stepen : b->stepen;
      lv_stepen = (a->stepen < b->stepen) ? a->stepen : b->stepen;
      c.stepen = gt_stepen;
      c.koeficijenti = calloc(gt_stepen + 1, sizeof(int));
      
      for(i=0;i<=lv_stepen;i++)
           c.koeficijenti[i] = a->koeficijenti[i] + b->koeficijenti[i] ;

      for(i=lv_stepen+1;i<=gt_stepen;i++)
           c.koeficijenti[i] = veci->koeficijenti[i];
           
      return c;  
}

void stampaj_polinom(polinom *p)
{
     int i;
     
     printf("P(x) = ");
     for(i=0;i<p->stepen;i++)
              printf("%dx^%d + ",p->koeficijenti[i],i);
              
     printf("%dx^%d",p->koeficijenti[i],i);
}
            
int main()
{
    int *koeficijenti,stepen;
    float x,rezultat;
    
    polinom a,b,c;
    a = unesi();
    b = unesi();
    c = saberi(&a,&b);
    stampaj_polinom(&c);
    free(a.koeficijenti);
    free(b.koeficijenti);
    free(c.koeficijenti);
    getch(); getch();getch();getch();
    return 0;
}
                       

