c
c Scrivere un programma per calcolare il prodotto tra due polinomi 
c in input P(x) e Q(x), rispettivamente, di grado n e di grado 
c m ( n , m = 1,..,5 ) con coefficienti reali.
c
c In output il programma stampi il polinomio risultante in forma ridotta.
c
c Ad esempio, introdotti in input i polinomi
c
c P(x) = 3x^3 - 2x^2 + x - 2
c
c Q(x) = 2x^2 + 5x -3
c
c l’output sia il prodotto
c
c R(x) = 6x^5 + 11x^4 - 17x^3 + 7x^2 - 13x + 6
c
c
c
c
c  Dati utilizzati:
c
c    p(ndim),q(ndim)  : vettori contenenti i coefficienti reali in input
c                       dei 2 polinomi
c    n, m             : grado, rispettivamente, del polinomi P(x) e Q(x)
c
c    r(ndim)          : vettore contenente i coefficienti reali del
c                       prodotto tra P(x) e Q(x)
c    ngrtot           : grado del polinomio prodotto 
c
c
c OSSERVAZIONE:
c    il vettore p(n) contiene i coefficienti del primo polinomio nel
c    seguente modo:
c     - p(1) = coefficiente della x di grado 0 (termine noto)
c     - p(2) = coefficiente della x di grado 1
c     .....
c     - p(n+1) = coefficiente della x di grado n
c
c     Ugualmente per il vettore q(m):
c     - q(1) = coefficiente della x di grado 0 (termine noto)
c     - q(2) = coefficiente della x di grado 1
c     .....
c     - q(m+1) = coefficiente della x di grado m
c
c     Lo stesso ragionamento per il vettore dei coefficienti di r(ngrtot)
c     - r(1) = coefficiente della x di grado 0 (termine noto)
c     - r(2) = coefficiente della x di grado 1
c     .....
c     - r(ngrtot+1) = coefficiente della x di grado ngrtot
c

      program polinomio

      parameter (ndim=10)
      real p(ndim),q(ndim),r(ndim)

c inizializzazione del polinomio prodotto risultante

      do 1 i=1,ndim
         r(i)=0.
1     continue


c input dei gradi e dei coefficienti di P(x) e Q(x)
c l'input dei coefficienti avviene dal grado massimo

      write(*,*)'Introduci il grado del primo polinomio P(x):  n = '
      read(*,*)n
      write(*,*)'Introduci il grado del secondo polinomio Q(x):  m = '
      read(*,*)m

      write(*,*)'Introduci i coefficienti reali del primo polinomio'
      write(*,*)'iniziando dal grado massimo'
      do 2 i=n+1,1,-1
         write(*,101)i-1
         read(*,*)p(i)
2     continue

      write(*,*)'Introduci i coefficienti reali del secondo polinomio'
      write(*,*)'iniziando dal grado massimo'
      do 3 i=m+1,1,-1
         write(*,101)i-1
         read(*,*)q(i)
3     continue


c calcolo del grado del polinomio prodotto

      ngrtot=n+m


c calcolo dei coefficienti del polinomio prodotto

      do 10 i=1,n+1
         do 10 j=1,m+1
            r(i+j-1)=r(i+j-1)+p(i)*q(j)
10    continue


c output dei coefficienti del polinomio prodotto

      write(*,*)
      write(*,102)ngrtot
      write(*,*)'e i coeff. della variabile x sono (dal grado massimo):'
      do 15 i=ngrtot+1,1,-1
         write(*,103)i-1,r(i)
15    continue


101   format(1x,'coeff. di x^',i1,' = ')
102   format(1x,'Il polinomio prodotto ha grado ',i2)
103   format(1x,'coeff. di x^',i2,'  = ',f8.3)

      stop
      end



