Fortran Coder

标题: FORTRAN中如何读入和输出数组(矩阵) [打印本页]

作者: landaifeng    时间: 2014-6-11 17:34
标题: FORTRAN中如何读入和输出数组(矩阵)
1.我写了一个读入矩阵的语句,程序没有报错,但是运行的时候就运行不了,请大家帮忙分析一下是什么原因?
2.如果想输出一个3*3的矩阵,应该怎么编译啊?
3.如果我想读入.txt文档里面的矩阵,应该怎么写程序啊?
[Fortran] 纯文本查看 复制代码
dimension n(3,3)
integer i,j
read (*,1)((n(i,j),j=1,3),i=1,3)
write (*,1)n
1 FORMAT (2X,'n=',3I6.2/2(4X,3I6.2/))
end


作者: 安靖    时间: 2014-6-11 18:54
txt里数据格式怎么样的?
作者: vvt    时间: 2014-6-11 19:21
不要用 dimension,不要用格式符read

[Fortran] 纯文本查看 复制代码
integer :: n(3,3)
read (*,*) n
write (*,'(3(3i6.2/))') n
end


至于 write 的格式符,你想写就写,不写拉倒。

从文件读入也很简单

[Fortran] 纯文本查看 复制代码
integer :: n(3,3)
Open( 111 , File = '文件名' )
read (111,*) n
write (*,'(3(3i6.2/))') n
end

作者: landaifeng    时间: 2014-6-11 23:02
vvt 发表于 2014-6-11 19:21
不要用 dimension,不要用格式符read

[mw_shl_code=fortran,true]integer :: n(3,3)

谢谢你的回复!我把你的程序输进去了,不输dimension a(3,3)程序会报错,而且输入integer :: n(3,3)
,也报错了!不知道是什么原因
作者: landaifeng    时间: 2014-6-11 23:11
安靖 发表于 2014-6-11 18:54
txt里数据格式怎么样的?

我现在txt数据时这样的
4.5 0.2 -1.3 0 0 0 0
0 5.3 0 0 0 0 0
0 0 10.2 5.1 0 -1.7 0
0 0 0 8.4 0 0 0
0 0 0 0 0.6 0 0
0 0 0 0 0 3.1 0
0 0 0 0 0 0 5.6
我用这个程序
[Fortran] 纯文本查看 复制代码
dimension a(3,3)
open (1,file='E\1.txt')
do 10 i=1,3
read(1,*)(a(i,j),j=1,3)
10 continue
write(*,*)((a(i,j),j=1,3),i=1,3)
100 FORMAT (2x,7f6.2/6(2x,7f6.2/))
end


是对的了!

作者: 楚香饭    时间: 2014-6-11 23:19
本帖最后由 chuxf 于 2014-6-11 23:20 编辑

第一,不要用 dimension
第二,请弄清楚数据的类型,是整型,还是浮点型。
整型用 integer 定义,用 I 格式符输出(你在主楼就这样写的,所以大家以为是整型)
浮点型用 real 定义,用 f 格式符输出(你在楼上就这样写的)
第三,出错,一定要给错误提示!!!!否则神仙也帮不了你
第四,请用 End Do,不要用 continue
第五,请扔掉手边的 FORTRAN77 的书,看一本 Fortran90 或 95 的书。
第六,你的数组不是 3*3 的。

作者: landaifeng    时间: 2014-6-11 23:32
chuxf 发表于 2014-6-11 23:19
第一,不要用 dimension
第二,请弄清楚数据的类型,是整型,还是浮点型。
整型用 integer 定义,用 I 格式 ...

谢谢,你的意见很有帮助!
1和5. 我确实是在用Fortran77的书,呵呵,那上面教我用dimension,所以采用的,是不是因为Fortran90的书不让用啦?附:能不能介绍一本Fortran学习的书呢?
2和6. 对不起,我这个没说清楚,我一开始txt文档时用的整型数据,后来回复的时候我把数据改了,然后重新看一下对不对,所以改了一下
3.下次我会注意写清楚错误提示!

作者: fcode    时间: 2014-6-11 23:37
《Fortran95 程序设计》【彭国伦】 http://fcode.cn/resource_ebook-1-1.html
为什么不提倡用 Dimension http://fcode.cn/guide-43-1.html
数据类型很重要~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2