找回密码
 注册
Simdroid-非首页
查看: 144|回复: 6

[子程序] Fortran 语言求助

[复制链接]
发表于 2011-12-6 21:50:23 | 显示全部楼层 |阅读模式 来自 香港
悬赏6仿真币已解决
C
      CHARACTER*80 MATERL
……
         IF ((NOEL.EQ.4866).OR.(NOEL.EQ.5396)) THEN
             STATEV(1)=PROPS(3)*1.002D0
         ENDIF
……
我想把if 后面的条件多加几个数据,比如(NOEL.EQ.4866).OR.(NOEL.EQ.5396).OR.(NOEL.EQ.1234).OR.(NOEL.EQ.5421)  ……加一个还可以(2个OR,三个数字),但是多加了2个数据以上发现数据行太长,于是我就换行。我试过直接回车 换;在第一行后面和第二行开头加&,都不行。哪位高手好心人给指点指点,这样的换行应该怎么样写,还是.OR.语句不能加到三个以上?请举个例子,比如说我要写(NOEL.EQ.4866).OR.(NOEL.EQ.5396).OR.(NOEL.EQ.1234).OR.(NOEL.EQ.5421).OR.(NOEL.EQ.4846).OR.(NOEL.EQ.5346).OR.(NOEL.EQ.1244).OR.(NOEL.EQ.5441)……,中间应该怎么换?还是应该换种语句?非常感谢!!

最佳答案

查看完整内容

你这个问题具有一定的难度,我还真是想当然了,其实不实际操作一下是不行的。 还是把机会留给能准确回答你问题的大牛吧。 其实在程序的其他地方,续行是个很正常的现象。 只要按照fortran 77 的语法来做,一般都没有问题的。
发表于 2011-12-6 21:50:24 | 显示全部楼层 来自 日本
Simdroid开发平台
你这个问题具有一定的难度,我还真是想当然了,其实不实际操作一下是不行的。
还是把机会留给能准确回答你问题的大牛吧。
其实在程序的其他地方,续行是个很正常的现象。
只要按照fortran 77 的语法来做,一般都没有问题的。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2011-12-7 00:12:15 | 显示全部楼层 来自 日本
请遵循fortran 77 的语法
参考子程序开头的做法:
在第5列写一个非0字符

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-12-7 10:00:21 | 显示全部楼层 来自 香港
guojunhang 发表于 2011-12-7 00:12
请遵循fortran 77 的语法
参考子程序开头的做法:
在第5列写一个非0字符

可不可以用“ IF ((NOEL.EQ.4866).OR.(NOEL.EQ.5396).OR.(NOEL.EQ.1234).OR.(NOEL.EQ.5421).OR.(NOEL.EQ.4846).OR.(NOEL.EQ.5346).OR.(NOEL.EQ.1244).OR.(NOEL.EQ.5441))THEN”举个例子?因为我已经试过了,用&开头,或直接用( 数字 . 开头,都没有用,非常感谢!!

回复

使用道具 举报

发表于 2011-12-7 12:27:01 | 显示全部楼层 来自 日本
嗯,我试过了,确实是不能这样简单通过序行的方式来解决问题。
不过我想了这样一个方式,就是避开这样的判断,改为用循环来判断。见下面的程序:
  1. C
  2. C
  3.       program ex33
  4.        dimension NOEL_Set(8)
  5.        data NOEL_Set/4866,5396,1234,5421,4846,5346,1244,5441/
  6.        write(*,*) 'set=', NOEL_Set
  7.        NOEL = 5
  8.        N = 0
  9.        Do 100 i = 1,8
  10.          if (NOEL.EQ.NOEL_Set(i)) then
  11.            N = 1
  12.            goto 200
  13.          end if
  14. 100    continue
  15. C
  16. 200    IF (N.eq.1) THEN
  17.          write(*,*) 'This node is in the set'
  18.        else
  19.          write(*,*) 'This node is not in the set'
  20.        endif
  21.       end program
  22. C
  23. C
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-12-7 14:43:36 | 显示全部楼层 来自 香港
guojunhang 发表于 2011-12-7 12:27
嗯,我试过了,确实是不能这样简单通过序行的方式来解决问题。
不过我想了这样一个方式,就是避开这样的判 ...

非常感谢,循环的确是个非常有效的方法。一开始就是因为没有学过Fortran的语言,想用简单的续行来解决问题。看来不行了。当然还有一个问题,就是我的node 是一批随机的数,肯定不止8个,这个8个节点我只是举个例子,所以还是面临着这么一个续行的问题,请问这个怎么解决呢?节点的话,续行应该没问题吧?

第二个,我第一次用这个悬赏,但是不知道怎么采纳你的答案,请告知我,不然不能采纳,悬赏分也给不了。再次 感谢耐心的答复!!

点评

...我好像也找不到采纳的按钮了...明天再看看  发表于 2011-12-7 23:09
回复

使用道具 举报

 楼主| 发表于 2011-12-7 20:50:59 | 显示全部楼层 来自 香港
guojunhang 发表于 2011-12-7 19:08
你这个问题具有一定的难度,我还真是想当然了,其实不实际操作一下是不行的。
还是把机会留给能准确回答你 ...

还是非常感谢你无私的帮助!我会继续等待答案,也会尝试你的方法,再次表示感谢!!
回复

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-18 00:57 , Processed in 0.036888 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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