Fortran Coder

楼主: 新手求指点
打印 上一主题 下一主题

[通用算法] 计算二维数组坐标“岛”的重心问题

[复制链接]

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
跳转到指定楼层
楼主
发表于 2014-3-6 13:34:37 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
我刚接触fortran没多久,现在要写一个程序来算出下面这个数组的重心
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我想把这个数组其中所有的1的值用坐标表示出来,比如(14,15)这样子,但是我不太清楚该怎么筛选和表示,求大神指点
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
沙发
 楼主| 发表于 2014-3-6 13:43:38 | 显示全部楼层
chuxf 发表于 2014-3-6 13:37
[mw_shl_code=fortran,true]Do i = 1 , n
  Do j = 1 , m
    if ( a(i,j) == 1 ) then

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0
如果是这样的,我想用程序判断上面的那些1把他们-20变到下面来该怎么做呢?

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
板凳
 楼主| 发表于 2014-3-6 13:55:14 | 显示全部楼层
chuxf 发表于 2014-3-6 13:45
什么叫 把他们 -20 变到下面来?

如果把所有的1看成一个岛,我想算这个岛重心,我想把所有的1的坐标全部相加最后除以25就是这个岛的重心,但是这是一个周期性的岛,就像第二组数组,有一部分1在上面,比如(5,20),但实际这个1是该在(5,0)这个坐标上,但是因为下面无法表示了所以这个1就被加了20跑到上面去了,但在计算重心的时候需要把这个1减掉20,就是从(5,20)变到(5,0)来计算重心

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
地板
 楼主| 发表于 2014-3-6 14:26:03 | 显示全部楼层
chuxf 发表于 2014-3-6 14:07
这个问题可以很简单,也可以很复杂。

这取决于:

只有一个岛,就是加了周期或者减了周期后就只有一个岛了,不会有2个,岛中间没有空洞,无限循环那个不太懂。

17

帖子

4

主题

0

精华

入门

F 币
80 元
贡献
50 点
5#
 楼主| 发表于 2014-3-7 11:58:18 | 显示全部楼层
chuxf 发表于 2014-3-6 19:23
感谢楼上指正。

已增加两行代码解决这一问题

谢谢大神了,我再好好研究下,感觉一下学到了好多东西
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-7 14:19

Powered by Tencent X3.4

© 2013-2024 Tencent

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