Fortran Coder

查看: 216|回复: 4

[流程控制] 想请教一下这个if函数的逻辑和参数传递

[复制链接]

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
发表于 2024-3-21 10:11:30 | 显示全部楼层 |阅读模式
请教一个问题。程序按照IF判断逻辑会先执行2处的else if,但是我这里else if的值想要用到1处IF的最终结果(34或者37行的值)。并且我想让后面的else if中“qulv”的值恒等于if中某一个i处的值(i等于第一次进入if 语句中的值),请问有什么办法可实现吗。感谢


ae6057c7ff82d21fd3f67edf7650a386.png

1958

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1340 元
贡献
565 点

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

发表于 2024-3-21 11:27:33 | 显示全部楼层
没太听懂你的意思。
if判断并不会先执行2处的 else if,只会在 if 条件不满足时执行 else if。

你想要另一个分支的值,通常做法是把计算这个需要的值的代码放在 if 前面。
这样不管进入哪个分支,都会先计算这个值。每个分支都能使用。

你可能需要定义额外的变量来存储它

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
 楼主| 发表于 2024-3-21 14:55:43 | 显示全部楼层
本帖最后由 盛世青衫 于 2024-3-21 15:25 编辑
fcode 发表于 2024-3-21 11:27
没太听懂你的意思。
if判断并不会先执行2处的 else if,只会在 if 条件不满足时执行 else if。

大佬好,我的判断条件是导致这个else if 先执行的原因(他这个X_1这个变量是从小到大的单调递增函数(22行),所以他的判断会导致else if先执行),但是我现在对于遇到的问题暂时没有想到其他的判断方法。请问大佬,有没有办法能够让第一次进入if的这个"i"值(因为I也是迭代循环的随着外层DO的不断循环也不断变化)对应的qulv值能够回到else if 中让else if中对应的每一个"i"值能够等于这个值,也就是让这个本身是在else if 后面执行的if语句先执行,和I值一起在第37行这里进行一个欧拉迭代运算,希望得到您的回复。感谢!!!

fortran程序

fortran程序

弯矩图

弯矩图

1958

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1340 元
贡献
565 点

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

发表于 2024-3-21 16:20:08 | 显示全部楼层
用文字表达算法,就是不太清楚。我不是很清楚你想要的算法是什么样子。
如果你要先找到一个符合条件的 i 。你要不要考虑用2次循环?

第一次先找到符合条件的 i,并保存在 k 里,然后计算对应的 qulv 值。
然后第二次循环,做下一步使用 k 和 qulv 值的计算。
[Fortran] 纯文本查看 复制代码
k = 0
do i = 1 , reso
  if( X_I(I)>L2 ) then
    k=i
    qulv = ...
    exit
  end if
end do
do i = 1 , reso
  m_jisuan(k ??? i ...
end do

22

帖子

8

主题

0

精华

入门

F 币
101 元
贡献
52 点
 楼主| 发表于 2024-3-22 10:32:06 | 显示全部楼层
fcode 发表于 2024-3-21 16:20
用文字表达算法,就是不太清楚。我不是很清楚你想要的算法是什么样子。
如果你要先找到一个符合条件的 i 。 ...

感谢指导,我学习一下。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-22 16:54

Powered by Tencent X3.4

© 2013-2024 Tencent

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