24小时热门版块排行榜    

查看: 1188  |  回复: 1

行云流水cs

金虫 (小有名气)

[求助] FORTRAN 读取文件数据出错,小弟只是个新手,请高手帮忙解决,谢谢。

PROGRAM MAIN

        INTEGER,ALLOCATABLE::A(:,

        INTEGER M,N

        WRITE(*,*)'ENTER M AND N :'

        READ(*,*) M,N

        ALLOCATE(A(M,N))

        OPEN(UNIT=1,FILE='F1.DAT',STATUS='OLD',ACCESS='SEQUENTIAL',FORM='FORMATTED')

        DO 10,I=1,M

          DO 20,J=1,N

        READ(1,100) A(I,J)

20        CONTINUE       

        CALL SORT(A,N)

10        CONTINUE

        OPEN(UNIT=2,FILE='F2.DAT',STATUS='NEW',ACCESS='SEQUENTIAL',FORM='FORMATTED')

        WRITE(2,200) ((A(I,J),J=1,N),I=1,M)

        CLOSE(1)

        CLOSE(2)

100     FORMAT(I4,3(4X,I4))

200        FORMAT(1X,4(3X,I6))

        END

C       

        SUBROUTINE SORT(A,N)

        INTEGER N,P,A(N),K

        DO 10,J=1,N-1

          P=J

          DO 20,I=J+1,N

            IF(A(I).LT.A(P)) THEN

              P=I

                END IF

20      CONTINUE

          K=A(J)

          A(J)=A(P)

          A(P)=K

10        CONTINUE

        END


F1.DAT如下,希望高手帮我调试一下,我的目地是将F1.dat中的数据,读一行然后排序,再读一行再排序。但是我发现程序读取文件完全是一列读取的。几个例子:我本来想读4*4
矩阵,但是程序却读了第一列的16个数据。
2570        2649        2540        2530

2532        2558        2544        2459

2479        2494        2515        2450

2448        2511        2458        2448

2407        2515        2510        2407

2436        2444        2384        2396

2320        2362        2330        2316

2280        2382        2320        2315

2324        2369        2252        2260

2282        2284        2303        2241

2239        2347        2232        2215

2207        2220        2216        2200

2204        2212        2174        2133

2135        2137        2140        2079

2115        2176        2203        2036

2107        2139        2742        2067

2053        2036        5555        2020

2009        1998        3807        1960

1947        2003        4393        1978

1986        1997        4894        1929

1955        1995        2131        1959

1909        1951        1927        1903

1910        1949        1873        1849

1852        1928        1842        1848

1882        1871        1830        1829

1869        1901        1772        1768
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

为无为,事无事,味无味。大小,多少,抱怨以德。图难乎其易也,为大乎其细也。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

purplewds

铜虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
行云流水cs: 金币+5 2012-06-30 13:45:09
你的语句写错了
只要把DO 10,I=1,M
          DO 20,J=1,N
        READ(1,100) A(I,J)
20        CONTINUE   
改成
        DO 10,I=1,M
        READ(1,100) (A(I,J),J=1,N)
20        CONTINUE   
就OK了。
2楼2012-06-30 12:41:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 行云流水cs 的主题更新
信息提示
请填处理意见