Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM LAB
- IMPLICIT NONE
- COMMON/size/x,n,m
- INTEGER x,n,m
- REAL array(100000)
- CALL GetSize()
- CALL ReadMatrix(array(1))
- CALL ReadVector(array(n*2+m+1))
- CALL Mult(array(1),array(n+1),array(n*2+1),
- *array(n*2+m+1),array(n*2+m+x+1))
- CALL OutMatrix(array(1),array(n+1),array(n*2+1))
- CALL Output(array(n*2+m+x+1))
- PAUSE
- STOP
- END
- SUBROUTINE GetSize()
- IMPLICIT NONE
- COMMON/size/x,n,m
- INTEGER n,m,r,x
- OPEN(1,FILE='size.txt',ERR=1)
- READ(1, *) x,n,m
- CLOSE(1)
- GOTO 2
- 1 PAUSE 'Error reading file.'
- STOP
- 2 CONTINUE
- END
- SUBROUTINE ReadMatrix(Xi)
- IMPLICIT NONE
- REAL Xi(*)
- COMMON/size/x,n,m
- INTEGER n,m,i,x
- OPEN(2,FILE='an.txt',err=1)
- DO i=1,n,1
- READ(2, *) Xi(i)
- END DO
- CLOSE(3)
- OPEN(3,FILE='ja.txt',err=1)
- DO i=1,n,1
- READ(3, *) Xi(n+i)
- END DO
- CLOSE(4)
- OPEN(4,FILE='ia.txt',err=1)
- DO i=1,m,1
- READ(4, *) Xi(n*2+i)
- END DO
- CLOSE(4)
- GOTO 2
- 1 PAUSE 'Error reading file.'
- STOP
- 2 CONTINUE
- END
- SUBROUTINE ReadVector(Xi)
- IMPLICIT NONE
- COMMON/size/x,n,m
- INTEGER n,m,i,x
- REAL Xi(*)
- OPEN(5,FILE='vector.txt',err=1)
- DO i=1,x,1
- READ(5, *) Xi(i)
- END DO
- CLOSE(6)
- GOTO 2
- 1 PAUSE 'Error reading file.'
- STOP
- 2 CONTINUE
- END
- SUBROUTINE Mult(an, ja, ia, v, result)
- IMPLICIT NONE
- COMMON/size/x,n,m
- INTEGER n,m,lim1,lim2,prom,i,j,x
- REAL an(n), ja(n), ia(m), v(x), result(x),k
- DO i=1,n,1
- PRINT *,an(i)
- END DO
- DO i=1,m,1
- lim1 = ia(i)
- lim2 = ia(i+1) - 1
- DO j=lim1,lim2,1
- prom=ja(j)
- result(i)=result(i)+v(prom)*an(j)
- k = result(i)
- END DO
- END DO
- RETURN
- END
- SUBROUTINE OutMatrix(an, ja, ia)
- IMPLICIT NONE
- COMMON/size/x,n,m
- INTEGER n,m,i,j,x,q,c,w
- REAL an(n), ja(n), ia(m)
- OPEN (7,FILE='outMatrix.txt')
- q = 1
- DO j=1,x,1
- IF(ia(j) .LT. ia(j+1)) THEN
- c = 1
- ELSE
- c = 0
- ENDIF
- w = ia(j+1) - ia(j)
- DO i=1,x,1
- IF(ja(q).EQ.i.AND.c.EQ.1.AND.w.GT.0) THEN
- WRITE (7,30) an(q)
- q = q + 1
- w = w - 1
- ELSE
- WRITE (7,30) 0.0
- ENDIF
- ENDDO
- WRITE (7,20)
- ENDDO
- CLOSE(7)
- 20 FORMAT (A1, ' ')
- 30 FORMAT (E10.4, ' ' \)
- END
- SUBROUTINE Output(Xi)
- IMPLICIT NONE
- COMMON/size/x,n,m
- REAL Xi(*)
- INTEGER n,m,i,x
- OPEN (6,FILE='output.txt')
- DO i=1,x,1
- WRITE (6,20) Xi(i)
- END DO
- CLOSE(6)
- 20 FORMAT (E10.4)
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement