!--------------------------------------------------------------------
!
!  Este programa calcula el producto escalar de dos vectores de
!  dimension n que se indicara a traves del teclado.
!   (Se omiten las tildes en los textos por pantalla)
!
!   Autores: J. París & Grupo de Métodos Numéricos en Ingeniería
!
!            Copyright:
!   Este programa es propiedad de sus autores.
!   No puede utilizarse con fines comerciales sin conocimiento
!   y autorización de sus autores.
!   Puede utilizarse con fines educativos sin ninguna restricción.
!
!--------------------------------------------------------------------

      program producto_escalar
      implicit integer*4(i-n)
      implicit real*8(a-h,o-z)
      allocatable u(:),v(:)

      write(6,'(/a/)')'Calculo del producto escalar de dos vectores'

      write(6,*)' Indique la dimension n de los vectores:'
      read(5,*)n

      allocate(u(n),v(n))

      write(6,*)' Indique las n componentes del primer vector'
      do i=1,n
        read(5,*)u(i)
      enddo

      write(6,*)' Indique las n componentes del segundo vector'
      do i=1,n
        read(5,*)v(i)
      enddo

      call prodesc(n,u,v,pe)

      write(6,*)' El producto escalar es: ',pe

      write(6,*)
      write(6,*)'Pulsa ENTER para finalizar el programa'
      read(5,*)   ! Se añade estas instrucciones para ejecutar el programa
                   ! haciendo doble-click en el fichero *.exe
      end

!-------------------------------------------------------------------------

      subroutine prodesc(n,u,v,pe)
      implicit integer*4(i-n)
      implicit real*8(a-h,o-z)
      dimension u(n),v(n)

      pe=0.d+00

      do i=1,n
        pe = pe + u(i) * v(i)
      enddo

      return
      end

