看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
求教各位大仙一个fortran问题
查看未名空间今日新帖
最新回复:2021年3月30日 8点45分 PT
共 (15) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
f
ftmit
3 年多
楼主 (未名空间)
求教各位大仙一个fortran问题:
已知数组A=(0,1,0,2,0,0,5),现需要把其中的非零元素写入另一个数组B,即输出B=(1,2,5)
中间的那条语句到底应该怎么写?如果您还有别的方法,也请不吝告知,先谢谢了。必须是fortran :(
do i = 1, 7
if (A(i).ne.0) then
B = A(i) */这个地方到底应该怎么写?多谢!
else
endif
enddo
B
BroPingtou
3 年多
2 楼
用两个下标呗
A就用你的do i = 1, 7
B设定一个初始值j = 1,遇到A(i) ne 0的时候j++
f
ftmit
3 年多
3 楼
先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。
---------------------------------------------------------
多谢!
我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的其他鬼咚咚了。
【 在 ToyotaYaris (丰田雅力士) 的大作中提到: 】
j = 1
do i = 1, 7
if (A(i).ne.0) then
B(j) = A(i) */这个地方到底应该怎么写?多谢!
j=j+1
else
endif
enddo
------------------------------------------------------
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 用两个下标呗
: A就用你的do i = 1, 7
: B设定一个初始值j = 1,遇到A(i) ne 0的时候j++
B
BroPingtou
3 年多
4 楼
你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
【 在 ftmit (八戒) 的大作中提到: 】
: 先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。
: ---------------------------------------------------------
: 多谢!
: 我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的
: 其他鬼咚咚了。
: j = 1
: do i = 1, 7
: if (A(i).ne.0) then
: B(j) = A(i) */这个地方到底应该怎么写?多谢!
: j=j+1
: ...................
f
ftmit
3 年多
5 楼
好的,我先查一下这个循环内的其他东西再说。多谢!
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
f
ftmit
3 年多
6 楼
您好,A在后边不调用了,使用您说的in-place,如何搞这个问题为好?麻烦您就这个
例子,具体写一下可以吗?先谢谢了。
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
w
wind
3 年多
7 楼
好多年没用过Fortran了,印象里也是要初始化变量的,就相当于C里头的分配memory。你这个B要开始指定长度吗?
j
jam76
3 年多
8 楼
为何会发到joke版来啊
(见鬼了,为什么J加1中间那个加号显示不出来?)
这样可以不
J=1
Do I = 1,7
If (A(i).eq.0) then
Goto 20
End if
B(j)=A(I)
J=j 1
20 Continue
End do
也就是遇到0跳过,B的下标不变。
H
Huangchong
3 年多
9 楼
这个站贴程序经常会被过滤
【 在 jam76 (jam) 的大作中提到: 】
: 为何会发到joke版来啊
: (见鬼了,为什么J加1中间那个加号显示不出来?)
: 这样可以不
: J=1
: Do I = 1,7
: If (A(i).eq.0) then
: Goto 20
: End if
: B(j)=A(I)
: J=j 1
: ...................
w
weidong
3 年多
10 楼
看了下,会FORTRAN的好象多是53老将。
【 在 Huangchong (净坛使者) 的大作中提到: 】
: 这个站贴程序经常会被过滤
★ 发自iPhone App: ChinaWeb 1.1.5
w
weidong
3 年多
11 楼
蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
: 看了下,会FORTRAN的好象多是53老将。
: ★ 发自iPhone App: ChinaWeb 1.1.5
★ 发自iPhone App: ChinaWeb 1.1.5
z
zeami
3 年多
12 楼
老板怀旧。。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
: 看了下,会FORTRAN的好象多是53老将。
: ★ 发自iPhone App: ChinaWeb 1.1.5
★ 发自iPhone App: ChinaWeb 1.1.5
j
jam76
3 年多
13 楼
楼主说了,必须是 Fortran
估计是历史遗留问题
【 在 weidong(伊拉克学习小组副组长) 的大作中提到: 】
: 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。
: ★ 发自iPhone App: ChinaWeb 1.1.5
w
weidong
3 年多
14 楼
估计那个撸主不是在改老代码,而是要调用老代码,如果是后者,还不如回去自己好好写数据接口。
【 在 jam76 (jam) 的大作中提到: 】
: 楼主说了,必须是 Fortran
: 估计是历史遗留问题
:
: 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。
:
: ★ 发自iPhone App: ChinaWeb 1.1.5
:
★ 发自iPhone App: ChinaWeb 1.1.5
d
daemonself1
3 年多
15 楼
https://pyccel.readthedocs.io/
用这个就好
【 在 ftmit (八戒) 的大作中提到: 】
: 求教各位大仙一个fortran问题:
: 已知数组A=(0,1,0,2,0,0,5),现需要把其中的非零元素写入另一个数组B,即输出B=(1
: ,2,5)
: 中间的那条语句到底应该怎么写?如果您还有别的方法,也请不吝告知,先谢谢了。必须
: 是fortran :(
: do i = 1, 7
: if (A(i).ne.0) then
: B = A(i) */这个地方到底应该怎么写?多谢!
: else
: endif
: ...................
请输入帖子链接
收藏帖子
求教各位大仙一个fortran问题:
已知数组A=(0,1,0,2,0,0,5),现需要把其中的非零元素写入另一个数组B,即输出B=(1,2,5)
中间的那条语句到底应该怎么写?如果您还有别的方法,也请不吝告知,先谢谢了。必须是fortran :(
do i = 1, 7
if (A(i).ne.0) then
B = A(i) */这个地方到底应该怎么写?多谢!
else
endif
enddo
用两个下标呗
A就用你的do i = 1, 7
B设定一个初始值j = 1,遇到A(i) ne 0的时候j++
先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。
---------------------------------------------------------
多谢!
我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的其他鬼咚咚了。
【 在 ToyotaYaris (丰田雅力士) 的大作中提到: 】
j = 1
do i = 1, 7
if (A(i).ne.0) then
B(j) = A(i) */这个地方到底应该怎么写?多谢!
j=j+1
else
endif
enddo
------------------------------------------------------
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 用两个下标呗
: A就用你的do i = 1, 7
: B设定一个初始值j = 1,遇到A(i) ne 0的时候j++
你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
【 在 ftmit (八戒) 的大作中提到: 】
: 先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。
: ---------------------------------------------------------
: 多谢!
: 我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的
: 其他鬼咚咚了。
: j = 1
: do i = 1, 7
: if (A(i).ne.0) then
: B(j) = A(i) */这个地方到底应该怎么写?多谢!
: j=j+1
: ...................
好的,我先查一下这个循环内的其他东西再说。多谢!
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
您好,A在后边不调用了,使用您说的in-place,如何搞这个问题为好?麻烦您就这个
例子,具体写一下可以吗?先谢谢了。
【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
好多年没用过Fortran了,印象里也是要初始化变量的,就相当于C里头的分配memory。你这个B要开始指定长度吗?
为何会发到joke版来啊
(见鬼了,为什么J加1中间那个加号显示不出来?)
这样可以不
J=1
Do I = 1,7
If (A(i).eq.0) then
Goto 20
End if
B(j)=A(I)
J=j 1
20 Continue
End do
也就是遇到0跳过,B的下标不变。
这个站贴程序经常会被过滤
【 在 jam76 (jam) 的大作中提到: 】
: 为何会发到joke版来啊
: (见鬼了,为什么J加1中间那个加号显示不出来?)
: 这样可以不
: J=1
: Do I = 1,7
: If (A(i).eq.0) then
: Goto 20
: End if
: B(j)=A(I)
: J=j 1
: ...................
看了下,会FORTRAN的好象多是53老将。
【 在 Huangchong (净坛使者) 的大作中提到: 】
: 这个站贴程序经常会被过滤
★ 发自iPhone App: ChinaWeb 1.1.5
蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
: 看了下,会FORTRAN的好象多是53老将。
: ★ 发自iPhone App: ChinaWeb 1.1.5
★ 发自iPhone App: ChinaWeb 1.1.5
老板怀旧。。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
【 在 weidong (伊拉克学习小组副组长) 的大作中提到: 】
: 看了下,会FORTRAN的好象多是53老将。
: ★ 发自iPhone App: ChinaWeb 1.1.5
★ 发自iPhone App: ChinaWeb 1.1.5
楼主说了,必须是 Fortran
估计是历史遗留问题
【 在 weidong(伊拉克学习小组副组长) 的大作中提到: 】
: 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。
: ★ 发自iPhone App: ChinaWeb 1.1.5
估计那个撸主不是在改老代码,而是要调用老代码,如果是后者,还不如回去自己好好写数据接口。
【 在 jam76 (jam) 的大作中提到: 】
: 楼主说了,必须是 Fortran
: 估计是历史遗留问题
:
: 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。
:
: ★ 发自iPhone App: ChinaWeb 1.1.5
:
★ 发自iPhone App: ChinaWeb 1.1.5
用这个就好
【 在 ftmit (八戒) 的大作中提到: 】
: 求教各位大仙一个fortran问题:
: 已知数组A=(0,1,0,2,0,0,5),现需要把其中的非零元素写入另一个数组B,即输出B=(1
: ,2,5)
: 中间的那条语句到底应该怎么写?如果您还有别的方法,也请不吝告知,先谢谢了。必须
: 是fortran :(
: do i = 1, 7
: if (A(i).ne.0) then
: B = A(i) */这个地方到底应该怎么写?多谢!
: else
: endif
: ...................