Fortran Coder

查看: 39428|回复: 7
打印 上一主题 下一主题

[输入输出] FORTRAN中如何读入和输出数组(矩阵)

[复制链接]

8

帖子

4

主题

0

精华

入门

F 币
39 元
贡献
25 点
跳转到指定楼层
#
发表于 2014-6-11 17:34:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 2014-6-11 23:37:13 | 只看该作者
《Fortran95 程序设计》【彭国伦】 http://fcode.cn/resource_ebook-1-1.html
为什么不提倡用 Dimension http://fcode.cn/guide-43-1.html
数据类型很重要~

8

帖子

4

主题

0

精华

入门

F 币
39 元
贡献
25 点
6#
 楼主| 发表于 2014-6-11 23:32:46 | 只看该作者
chuxf 发表于 2014-6-11 23:19
第一,不要用 dimension
第二,请弄清楚数据的类型,是整型,还是浮点型。
整型用 integer 定义,用 I 格式 ...

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

724

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
653 元
贡献
335 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

5#
发表于 2014-6-11 23:19:01 | 只看该作者
本帖最后由 chuxf 于 2014-6-11 23:20 编辑

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

8

帖子

4

主题

0

精华

入门

F 币
39 元
贡献
25 点
地板
 楼主| 发表于 2014-6-11 23:11:50 | 只看该作者
安靖 发表于 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


是对的了!

8

帖子

4

主题

0

精华

入门

F 币
39 元
贡献
25 点
板凳
 楼主| 发表于 2014-6-11 23:02:40 | 只看该作者
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)
,也报错了!不知道是什么原因

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2014-6-11 19:21:30 | 只看该作者
不要用 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

62

帖子

14

主题

0

精华

专家

F 币
557 元
贡献
326 点
楼主
发表于 2014-6-11 18:54:36 | 只看该作者
txt里数据格式怎么样的?

评分

参与人数 1F 币 +9 贡献 +9 收起 理由
fcode + 9 + 9 欢迎光临

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 00:53

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表