盛世青衫 发表于 2024-3-21 10:11:30

想请教一下这个if函数的逻辑和参数传递

请教一个问题。程序按照IF判断逻辑会先执行2处的else if,但是我这里else if的值想要用到1处IF的最终结果(34或者37行的值)。并且我想让后面的else if中“qulv”的值恒等于if中某一个i处的值(i等于第一次进入if 语句中的值),请问有什么办法可实现吗。感谢


fcode 发表于 2024-3-21 11:27:33

没太听懂你的意思。
if判断并不会先执行2处的 else if,只会在 if 条件不满足时执行 else if。

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

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

盛世青衫 发表于 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行这里进行一个欧拉迭代运算,希望得到您的回复。感谢!!!

fcode 发表于 2024-3-21 16:20:08

用文字表达算法,就是不太清楚。我不是很清楚你想要的算法是什么样子。
如果你要先找到一个符合条件的 i 。你要不要考虑用2次循环?

第一次先找到符合条件的 i,并保存在 k 里,然后计算对应的 qulv 值。
然后第二次循环,做下一步使用 k 和 qulv 值的计算。
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

盛世青衫 发表于 2024-3-22 10:32:06

fcode 发表于 2024-3-21 16:20
用文字表达算法,就是不太清楚。我不是很清楚你想要的算法是什么样子。
如果你要先找到一个符合条件的 i 。 ...

感谢指导,我学习一下。{:5_121:}
页: [1]
查看完整版本: 想请教一下这个if函数的逻辑和参数传递