      program mnozmac
      implicit real*8 (a-h,o-z)
c
c Program mnozy macierze A i B czytane z pliku macierz.dat. Wynik jest
c zapamietywany w macierzy C i drukowany w pliku macierz.wyn. Do wykonania
c obliczen uzywany jest podprogram matmult. Rzeczywiste wymiary macierzy
c wynosza odpowiednio A(m x n), B(n x nn) i C(m x nn).
c
      parameter (maxn=100)
      dimension A(maxn,maxn),B(maxn,maxn),C(maxn,maxn)
c
c Otwieramy plik danych i wynikow.
c
      open(1,file="macierz.dat",status="old")
      open(2,file="macierz.wyn")
c
c Czytamy wymiary macierzy oraz macierze.
c
      read(1,*) m,n,nn
      read(1,*) ((a(i,j),j=1,n),i=1,m)
      read(1,*) ((b(i,j),j=1,nn),i=1,n)
c
c Drukujemy macierze A i B.
c
      write (2,*) "Macierz A"
      write (2,'(5x,8(i5,5x))') (i,i=1,n)
      do i=1,m
        write (2,'(i5,8f10.5)') i,(a(i,j),j=1,n) 
      enddo
      write (2,*)
      write (2,*) "Macierz B"
      write (2,'(5x,8(i5,5x))') (i,i=1,nn)
      do i=1,n
        write (2,'(i5,8f10.5)') i,(b(i,j),j=1,nn) 
      enddo
      write (2,*)
c
c Mnozenie macierzy.
c
      call matmult(m,n,nn,maxn,maxn,a,b,c)
c
c Drukujemy powstala macierz C.
c
      write (2,*) "Macierz C"
      write (2,'(5x,8(i5,5x))') (i,i=1,nn)
      do i=1,m
        write (2,'(i5,8f10.5)') i,(c(i,j),j=1,nn)
      enddo
      stop
      end
