Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.       PROGRAM LAB
  2.       IMPLICIT NONE
  3.       COMMON/size/x,n,m
  4.       INTEGER x,n,m
  5.       REAL array(100000)
  6.       CALL GetSize()
  7.       CALL ReadMatrix(array(1))
  8.       CALL ReadVector(array(n*2+m+1))
  9.       CALL Mult(array(1),array(n+1),array(n*2+1),
  10.      *array(n*2+m+1),array(n*2+m+x+1))
  11.       CALL OutMatrix(array(1),array(n+1),array(n*2+1))
  12.       CALL Output(array(n*2+m+x+1))
  13.       PAUSE
  14.       STOP
  15.       END
  16.      
  17.      
  18.      
  19.       SUBROUTINE GetSize()
  20.       IMPLICIT NONE
  21.       COMMON/size/x,n,m
  22.       INTEGER n,m,r,x
  23.       OPEN(1,FILE='size.txt',ERR=1)
  24.       READ(1, *) x,n,m
  25.       CLOSE(1)
  26.       GOTO 2
  27.    1  PAUSE 'Error reading file.'
  28.       STOP    
  29.    2  CONTINUE
  30.       END
  31.      
  32.      
  33.      
  34.       SUBROUTINE ReadMatrix(Xi)
  35.       IMPLICIT NONE
  36.       REAL Xi(*)
  37.       COMMON/size/x,n,m
  38.       INTEGER n,m,i,x,k
  39.      
  40.       OPEN(2,FILE='an.bin',access='direct',recl=4,err=1)
  41.       k=1
  42.       DO i=1,n,1
  43.       READ(2,rec=k) Xi(i)
  44.       k=k+1
  45.       END DO
  46.      
  47.       k=1
  48.       OPEN(3,FILE='ja.bin',access='direct',recl=4,err=1)
  49.       DO i=1,n,1
  50.       READ(3,rec=k) Xi(n+i)
  51.       k=k+1
  52.       END DO
  53.      
  54.       k=1
  55.       OPEN(4,FILE='ia.bin',access='direct',recl=4,err=1)
  56.       DO i=1,m
  57.       READ(4,rec=k) Xi(n*2+i)
  58.       k=k+1
  59.       END DO
  60.  
  61.       GOTO 2
  62.    1  PAUSE 'Error reading file.'
  63.       STOP
  64.    2  CONTINUE  
  65.       END
  66.      
  67.      
  68.      
  69.       SUBROUTINE ReadVector(Xi)
  70.       IMPLICIT NONE
  71.       COMMON/size/x,n,m
  72.       INTEGER n,m,i,x,k
  73.       REAL Xi(*)
  74.      
  75.       OPEN(5,FILE='vector.bin',access='direct',recl=4,err=1)
  76.       k=1
  77.       DO i=1,x,1
  78.       READ(5,rec=k,END=2) Xi(i)
  79.       k=k+1
  80.       END DO
  81.       CLOSE(6)
  82.      
  83.       GOTO 2
  84.    1  PAUSE 'Error reading file.'
  85.       STOP
  86.    2  CONTINUE  
  87.       END
  88.      
  89.      
  90.      
  91.       SUBROUTINE Mult(an, ja, ia, v, result)
  92.       IMPLICIT NONE
  93.       COMMON/size/x,n,m
  94.       INTEGER n,m,lim1,lim2,prom,i,j,x
  95.       REAL an(n), ja(n), ia(m), v(x), result(x),k
  96.      
  97.       DO i=1,m,1
  98.       lim1 = ia(i)
  99.       lim2 = ia(i+1) - 1
  100.       DO j=lim1,lim2,1
  101.       prom=ja(j)
  102.       result(i)=result(i)+v(prom)*an(j)
  103.       k = result(i)
  104.       END DO
  105.       END DO
  106.      
  107.       RETURN
  108.       END
  109.      
  110.      
  111.      
  112.       SUBROUTINE OutMatrix(an, ja, ia)
  113.       IMPLICIT NONE
  114.       COMMON/size/x,n,m
  115.       INTEGER n,m,i,j,x,q,c,w
  116.       REAL an(n), ja(n), ia(m)
  117.       OPEN (7,FILE='outMatrix.txt')
  118.      
  119.       q = 1
  120.       DO j=1,x,1
  121.       IF(ia(j) .LT. ia(j+1)) THEN
  122.       c = 1
  123.       ELSE
  124.       c = 0
  125.       ENDIF
  126.       w = ia(j+1) - ia(j)
  127.      
  128.       DO i=1,x,1
  129.       IF(ja(q).EQ.i.AND.c.EQ.1.AND.w.GT.0) THEN
  130.       WRITE (7,30) an(q)
  131.       q = q + 1
  132.       w = w - 1
  133.       ELSE
  134.       WRITE (7,30) 0.0
  135.       ENDIF
  136.      
  137.       ENDDO
  138.       WRITE (7,20)
  139.      
  140.       ENDDO
  141.      
  142.       CLOSE(7)
  143.      
  144.    20 FORMAT (A1, ' ')
  145.    30 FORMAT (E10.4, ' ' \)
  146.       END
  147.      
  148.      
  149.      
  150.       SUBROUTINE Output(Xi)
  151.       IMPLICIT NONE
  152.       COMMON/size/x,n,m
  153.       REAL Xi(*)
  154.       INTEGER n,m,i,x
  155.       OPEN (6,FILE='output.txt')
  156.       DO i=1,x,1
  157.       WRITE (6,20) Xi(i)
  158.       END DO
  159.       CLOSE(6)
  160.      
  161.    20 FORMAT (E10.4)
  162.       END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement