Home > other >  FORTRAN, the errors in the process of C o bosses to help
FORTRAN, the errors in the process of C o bosses to help

Time:10-09

SUBROUTINE SWAPEL (N, A)
C -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
C swaps elements of an array
C -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
An INTEGER N, I
REAL A (N), AT (N)
DO I=1, 10 N
10 the AT (I)=A (I)
DO I=0, 20 N - 1
A (I + 1)=20 AT (N - I)
RETURN
END
There is an error in the process of f2c
Declaration the error for the at: adjustable dimension on non - argument
Wr_ardecls: nonconstant array size

CodePudding user response:

This code has a problem, why do you want to use first copy a temporary array? ~ ~ ~

CodePudding user response:

This is not A copy, is to use intermediate variable and then the inside of the array elements in A sequence, can put back A backwards

CodePudding user response:

The reverse can be directly:
SUBROUTINE SWAPEL (N, A)
C -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
C swaps elements of an array
C -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
An INTEGER N, I, X
REAL A (N)
DO I=1, 10 INT (N/2)
X=A (I)
A (I)=A (N - I + 1)
A (N - I + 1)=10 X
RETURN
END

Copy again, take up the space is very much, if large array efficiency is low