Fortran Coder

标题: 求已知数左右两边的数 [打印本页]

作者: 大头鼹鼠    时间: 2016-9-9 15:21
标题: 求已知数左右两边的数
本帖最后由 大头鼹鼠 于 2016-9-9 17:25 编辑

比如一个数组 a(/1,2,3,4,5,6,7,8,9,10/) 比如 要找到7.5左右两边的数,7和8, 这个有没有内置函数呀,当然我的数列里面数肯定是全部不相同的。

作者: li913    时间: 2016-9-9 16:45
没有,自己写代码。
作者: 大头鼹鼠    时间: 2016-9-9 17:26
li913 发表于 2016-9-9 16:45
没有,自己写代码。

好的 那就自己写吧 虽然也不难
作者: fcode    时间: 2016-9-9 19:29
[Fortran] 纯文本查看 复制代码
program www_fcode_cn
  implicit none
  real :: a(10) = [1,2,3,4,5,6,7,8,9,10]
  write(*,*) maxloc( a , a < 7.5 )
  write(*,*) minloc( a , a > 7.5 )
end program www_fcode_cn

作者: 大头鼹鼠    时间: 2016-9-9 22:03
fcode 发表于 2016-9-9 19:29
[mw_shl_code=fortran,true]program www_fcode_cn
  implicit none
  real :: a(10) = [1,2,3,4,5,6,7,8,9, ...

我这个函数研究了很久,原来关键的是在判断语句的上,我总是 maxloc(a,a>7.5) 搞了很久 一直在寻找最大的数,你这样改一下 果然茅塞顿开 领教了 谢谢
你这个写写法是是输出左右两个点的位置,谢谢了
作者: fcode    时间: 2016-9-11 21:32
也许你需要的是 maxval 或 minval
作者: 大头鼹鼠    时间: 2016-9-12 09:21
fcode 发表于 2016-9-11 21:32
也许你需要的是 maxval 或 minval

maxval 和minval的对于单个数组还是可以的,如果要进行一系列数据处理,还是定位很方便,比如一个a(10,10)素组,只需要对第一列进行定位查找就够了,然后后面的就可以用这个定位的值,实际的问题一般也是告诉你一个条件,然后把其他的找出来或者进行运算




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2