在fortran中,单do循环放在if语句里面的时候该怎么办?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 09:06:12
在fortran中,单do循环放在if语句里面的时候该怎么办?
类似这样:
If(条件) then
Do i = 1, N
循环体
End Do
End If
再问: 感谢回答,但我是在弄一个数组,问题是If(条件) then,这条语句中,判断条件就是一个需要循环判断的,这该怎么办呢?
再答: 你描述得不清楚,请举例。
再问: 好吧,例子是这样的,我做了一个程序,有一个数组,数组第一个元素是用ran函数得到的,后面几个也得用这个函数得到,但是元素的关系是任意两个元素间的差值必须大于一固定值,如r=1。因此,在得到后面的元素时,就必须判定与前面差值的关系,如果不符合,那就用ran函数继续得到元素。可关键问题就是那个判定,需要do循环,不过不知道该怎么做。
再答: any 函数和all函数可能能帮助你。 Program Main Implicit None Real :: a(10) = 0.0 Integer i call Random_Seed() Do i = 1 , 10 Do call Random_Number( a(i) ) a(i) = a(i) * 20 !// 获得 0 到 20 间的数 If ( i == 1 ) Exit !// 如果是第一个数,就直接跳出 If ( all( (abs(a(1:i-1)-a(i))>1.0 ) ) ) Exit !// 如果 a(i:i-1) 的所有数,都与 a(i) 差1.0以上,就跳出 End Do End Do write( * , * ) a(:) End Program Main
再问: 谢谢,我试试看
If(条件) then
Do i = 1, N
循环体
End Do
End If
再问: 感谢回答,但我是在弄一个数组,问题是If(条件) then,这条语句中,判断条件就是一个需要循环判断的,这该怎么办呢?
再答: 你描述得不清楚,请举例。
再问: 好吧,例子是这样的,我做了一个程序,有一个数组,数组第一个元素是用ran函数得到的,后面几个也得用这个函数得到,但是元素的关系是任意两个元素间的差值必须大于一固定值,如r=1。因此,在得到后面的元素时,就必须判定与前面差值的关系,如果不符合,那就用ran函数继续得到元素。可关键问题就是那个判定,需要do循环,不过不知道该怎么做。
再答: any 函数和all函数可能能帮助你。 Program Main Implicit None Real :: a(10) = 0.0 Integer i call Random_Seed() Do i = 1 , 10 Do call Random_Number( a(i) ) a(i) = a(i) * 20 !// 获得 0 到 20 间的数 If ( i == 1 ) Exit !// 如果是第一个数,就直接跳出 If ( all( (abs(a(1:i-1)-a(i))>1.0 ) ) ) Exit !// 如果 a(i:i-1) 的所有数,都与 a(i) 差1.0以上,就跳出 End Do End Do write( * , * ) a(:) End Program Main
再问: 谢谢,我试试看