program matrix_multiplication
implicit none
integer :: i, j, k, m, n, p
real, allocatable :: A(:,:), B(:,:), C(:,:)
print *, "Enter dimensions of matrix A (m x n):"
read *, m, n
print *, "Enter number of columns of matrix B (p):"
read *, p
allocate(A(m,n))
allocate(B(n,p))
allocate(C(m,p))
print *, "Enter elements of matrix A:"
do i = 1, m
read *, A(i, :)
end do
print *, "Enter elements of matrix B:"
do i = 1, n
read *, B(i, :)
end do
C = 0.0
do i = 1, m
do j = 1, p
do k = 1, n
C(i,j) = C(i,j) + A(i,k) * B(k,j)
end do
end do
end do
print *, "Resultant matrix C = A * B:"
do i = 1, m
print *, (C(i,j), j=1,p)
end do
deallocate(A, B, C)
end program matrix_multiplication
cHJvZ3JhbSBtYXRyaXhfbXVsdGlwbGljYXRpb24KICAgIGltcGxpY2l0IG5vbmUKICAgIGludGVnZXIgOjogaSwgaiwgaywgbSwgbiwgcAogICAgcmVhbCwgYWxsb2NhdGFibGUgOjogQSg6LDopLCBCKDosOiksIEMoOiw6KQoKICAgIAogICAgcHJpbnQgKiwgIkVudGVyIGRpbWVuc2lvbnMgb2YgbWF0cml4IEEgKG0geCBuKToiCiAgICByZWFkICosIG0sIG4KICAgIHByaW50ICosICJFbnRlciBudW1iZXIgb2YgY29sdW1ucyBvZiBtYXRyaXggQiAocCk6IgogICAgcmVhZCAqLCBwCgogCiAgICBhbGxvY2F0ZShBKG0sbikpCiAgICBhbGxvY2F0ZShCKG4scCkpCiAgICBhbGxvY2F0ZShDKG0scCkpCgogICAgcHJpbnQgKiwgIkVudGVyIGVsZW1lbnRzIG9mIG1hdHJpeCBBOiIKICAgIGRvIGkgPSAxLCBtCiAgICAgICAgcmVhZCAqLCBBKGksIDopCiAgICBlbmQgZG8KCiAgICBwcmludCAqLCAiRW50ZXIgZWxlbWVudHMgb2YgbWF0cml4IEI6IgogICAgZG8gaSA9IDEsIG4KICAgICAgICByZWFkICosIEIoaSwgOikKICAgIGVuZCBkbwoKICAgIEMgPSAwLjAKICAgIGRvIGkgPSAxLCBtCiAgICAgICAgZG8gaiA9IDEsIHAKICAgICAgICAgICAgZG8gayA9IDEsIG4KICAgICAgICAgICAgICAgIEMoaSxqKSA9IEMoaSxqKSArIEEoaSxrKSAqIEIoayxqKQogICAgICAgICAgICBlbmQgZG8KICAgICAgICBlbmQgZG8KICAgIGVuZCBkbwoKICAgIHByaW50ICosICJSZXN1bHRhbnQgbWF0cml4IEMgPSBBICogQjoiCiAgICBkbyBpID0gMSwgbQogICAgICAgIHByaW50ICosIChDKGksaiksIGo9MSxwKQogICAgZW5kIGRvCgogICAgZGVhbGxvY2F0ZShBLCBCLCBDKQplbmQgcHJvZ3JhbSBtYXRyaXhfbXVsdGlwbGljYXRpb24=