fortran转成c语言,麻烦哪位大侠帮帮忙!
PROGRAM CLOSESTATION
PARAMETER (PI=3.1415926)
double NSTA[29886,2],N1,N2,AD[5000];
CHARACTER STA(29886)*5,STATION0*5,STAA(5000)*5,IT*5,STAAA(500)*5
LOGICAL BUBBLE
OPEN(1,FILE='CLOSESTATION_BASE.TXT')
OPEN(2,FILE='CLOSESTATION_ALL.TXT')
OPEN(3,FILE='STATION-REN29886.TXT')
NF=29886
DO I=1,NF
READ(3,'(A5,F10.5,F10.4)') STA(I),(NSTA(I,J),J=1,2)
END DO
REWIND(3)
5 NN=0
READ(3,'(A5,F10.5,F10.4)',END=200) STATION0,N1,N2
ALA=PI*N1/180
ALO=PI*N2/180
DO I=1,NF
IF(STA(I).NE.STATION0) THEN
ALA1=PI*NSTA(I,1)/180
ALO1=PI*NSTA(I,2)/180
A=SIN(ALA)*SIN(ALA1)+COS(ALA)*COS(ALA1)*COS(ALO-ALO1)
D=180*ACOS(A)/PI*110 !(Km)
IF(D.LE.30) THEN
NN=NN+1
STAA(NN)=STA(I)
AD(NN)=D
END IF
END IF
END DO
DO 40 J=1,NN-1
JJ=J
BUBBLE=.TRUE.
30 IF(JJ.GE.1.AND.BUBBLE) THEN
IF(AD(JJ+1).LT.AD(JJ)) THEN
IT=STAA(JJ)
STAA(JJ)=STAA(JJ+1)
STAA(JJ+1)=IT
AID=AD(JJ)
AD(JJ)=AD(JJ+1)
AD(JJ+1)=AID
ELSE
BUBBLE=.FALSE.
END IF
JJ=JJ-1
GOTO 30
END IF
40 CONTINUE
100 WRITE(2,'(A5,F10.5,F10.4,I5,5000A7)') STATION0,N1,N2,NN,(STAA(I),I=1,NN)
NB=0
DO I=1,NN
IF(STAA(I)(1:1).EQ.'5') THEN
NB=NB+1
STAAA(NB)=STAA(I)
END IF
END DO
110 WRITE(1,'(A5,F10.5,F10.4,I5,500A7)') STATION0,N1,N2,NB,(STAAA(I),I=1,NB)
GOTO 5
200 CLOSE(2)
END
麻烦哪位大侠帮帮忙!这个语言没有学过,搞不懂啊!
PARAMETER (PI=3.1415926)
double NSTA[29886,2],N1,N2,AD[5000];
CHARACTER STA(29886)*5,STATION0*5,STAA(5000)*5,IT*5,STAAA(500)*5
LOGICAL BUBBLE
OPEN(1,FILE='CLOSESTATION_BASE.TXT')
OPEN(2,FILE='CLOSESTATION_ALL.TXT')
OPEN(3,FILE='STATION-REN29886.TXT')
NF=29886
DO I=1,NF
READ(3,'(A5,F10.5,F10.4)') STA(I),(NSTA(I,J),J=1,2)
END DO
REWIND(3)
5 NN=0
READ(3,'(A5,F10.5,F10.4)',END=200) STATION0,N1,N2
ALA=PI*N1/180
ALO=PI*N2/180
DO I=1,NF
IF(STA(I).NE.STATION0) THEN
ALA1=PI*NSTA(I,1)/180
ALO1=PI*NSTA(I,2)/180
A=SIN(ALA)*SIN(ALA1)+COS(ALA)*COS(ALA1)*COS(ALO-ALO1)
D=180*ACOS(A)/PI*110 !(Km)
IF(D.LE.30) THEN
NN=NN+1
STAA(NN)=STA(I)
AD(NN)=D
END IF
END IF
END DO
DO 40 J=1,NN-1
JJ=J
BUBBLE=.TRUE.
30 IF(JJ.GE.1.AND.BUBBLE) THEN
IF(AD(JJ+1).LT.AD(JJ)) THEN
IT=STAA(JJ)
STAA(JJ)=STAA(JJ+1)
STAA(JJ+1)=IT
AID=AD(JJ)
AD(JJ)=AD(JJ+1)
AD(JJ+1)=AID
ELSE
BUBBLE=.FALSE.
END IF
JJ=JJ-1
GOTO 30
END IF
40 CONTINUE
100 WRITE(2,'(A5,F10.5,F10.4,I5,5000A7)') STATION0,N1,N2,NN,(STAA(I),I=1,NN)
NB=0
DO I=1,NN
IF(STAA(I)(1:1).EQ.'5') THEN
NB=NB+1
STAAA(NB)=STAA(I)
END IF
END DO
110 WRITE(1,'(A5,F10.5,F10.4,I5,500A7)') STATION0,N1,N2,NB,(STAAA(I),I=1,NB)
GOTO 5
200 CLOSE(2)
END
麻烦哪位大侠帮帮忙!这个语言没有学过,搞不懂啊!