回 帖 发 新 帖 刷新版面

主题:求助:为什么ivf下读取数据总是错误?

其实就是编写高斯全主元消去法的一个程序,编译器是最新的ivf和vs2008。最近想学学从外部文件中读取数据用于计算,但是怎么也不行啊:能生成,但是执行的时候总是不成功。实在没招了,请各位高手们帮忙解答啊!!!
我在input.txt中存放着4行5列的数据,用open去读取出来成数组C(4,5),然后赋值给A(4,4)和B(4)用于后续计算。
Program AGAUS0
 Implicit none
 Integer,Parameter ::N=4
 Integer L,I,J,K,IS,m,r,o,p,q
 Real D,T
 Real ::A(N,N)
 Real ::B(N),X(N),JS(N)
 Real ::C(N,N+1)
 Open(10,file='input.txt')
 K=0
 L=1
 Read(10,*) C
 Close(10)
Do I=1,N
 Do J=1,N
  A(I,J)=C(I,J)
 End do
 B(I)=C(I,N+1)
End do
Do K=1,N-1
 D=0.0
 Do I=K,N
  Do J=K,N
   If(Abs(A(I,J)).GT.D)Then
    D=Abs(A(I,J))
    JS(K)=J
    IS=I
   End if
  End do
 End do
 If(D+1.0.EQ.1.0)Then
  L=0
 Else
  If(JS(K).NE.K)Then
   Do m=1,N
    T=A(m,K)
    A(m,K)=A(m,JS(K))
    A(m,JS(K))=T
   End do
  End if
  If(IS.NE.K)Then
   Do p=K,N
    T=A(K,p)
    A(K,p)=A(IS,p)
    A(IS,p)=T
   End do
   T=B(K)
   B(K)=B(IS)
   B(IS)=T
  End if
 End if !换主元完成
 If(L.EQ.0)Then
  Print*,'FAIL'
 End if
 Do q=K+1,N
  A(K,q)=A(K,q)/A(K,K)
 End do
 B(K)=B(K)/A(K,K)
 Do r=K+1,N
  Do o=K+1,N
  A(r,o)=A(r,o)-A(r,K)*A(K,o)
  End do
  B(r)=B(r)-A(r,K)*B(K)
 End do
End do
If(Abs(A(N,N))+1.0.EQ.1.0)Then
 L=0
 Print*,'FAIL'
End if
X(N)=B(N)/A(N,N)
Do I=N-1,1,-1
 T=0.0
 Do J=I+1,N
  T=T+A(I,J)*X(J)
 End do
 X(I)=B(I)-T
End do
JS(N)=N
Do K=N,1,-1
 If(JS(K).NE.K)Then
  T=X(K)
  X(K)=X(JS(K))
  X(JS(K))=T
 End if
End do
Print*,(X(I),I=1,N)
End Program
[size=5]5[/size][color=800000]800000[/color]

回复列表 (共11个回复)

沙发


具体哪里不成功?似乎没问题。[em18]

板凳

是这样的
点击 生成 的时候没有发现错误,然后点击 调试->开始执行,就出错了,
forrtl:severe<24> end-of-file during read,,,
如果不用读取文件里的数据的方法,直接data赋值给A,B的话是能运行的啊

3 楼

[quote]是这样的
点击 生成 的时候没有发现错误,然后点击 调试->开始执行,就出错了,
forrtl:severe<24> end-of-file during read,,,
如果不用读取文件里的数据的方法,直接data赋值给A,B的话是能运行的啊[/quote]

明白了,你的txt文件有问题!贴出来看看。

4 楼

jstzhurj大神帮帮忙啊
下面是txt的数据
1 2 3 -4 -2
-3 -4 -12 13 5
2 10 0 -3 10
4 14 9 -13 7
每个数据中间一个空格

5 楼

[quote]jstzhurj大神帮帮忙啊
下面是txt的数据
1 2 3 -4 -2
-3 -4 -12 13 5
2 10 0 -3 10
4 14 9 -13 7
每个数据中间一个空格[/quote]

是你的'input.txt'文件吗?应该不会有问题!你再复制过去重新存一下。

6 楼


这就是input.txt的文件,试过删掉,然后重新输入,或者换了好几个存放地址都是各种错误,除了end-of-file外,还遇到过编译器说X数组的下标为零,越界了。。。

7 楼

[quote]
这就是input.txt的文件,试过删掉,然后重新输入,或者换了好几个存放地址都是各种错误,除了end-of-file外,还遇到过编译器说X数组的下标为零,越界了。。。[/quote]

怎么可能?我这儿运行结果:
 -0.3821587     -3.8544834E-03   1.105727      -1.408040
请按任意键继续. . .

运行环境:vs2008+ivf11,你用data赋值,看看是不是这个结果!

8 楼


嗯????我也试过,这次把所有的项目全删完了,然后新建一个,把代码复制以后果然能运行,结果跟你的一样了,多谢你的帮助!!!
今天一天都弄这玩意了,之前怎么也不行,全新运行一次居然能行,难道是因为我重启了电脑吗

9 楼


山穷水复疑无路,柳暗花明又一村!

10 楼


真的多谢你了!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册