f***t 发帖数: 2247 | 1 求教各位大仙一个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********u 发帖数: 1 | 2 用两个下标呗
A就用你的do i = 1, 7
B设定一个初始值j = 1,遇到A(i) ne 0的时候j++ |
f***t 发帖数: 2247 | 3 先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。
---------------------------------------------------------
多谢!
我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的
其他鬼咚咚了。
j = 1
do i = 1, 7
if (A(i).ne.0) then
B(j) = A(i) */这个地方到底应该怎么写?多谢!
j=j+1
else
endif
enddo
------------------------------------------------------ |
B********u 发帖数: 1 | 4 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
【在 f***t 的大作中提到】 : 先多谢!军版ToyotaYaris (丰田雅力士)给出的回答和你的一样。 : --------------------------------------------------------- : 多谢! : 我就是这么干的,但编译通不过。既然你也认为这样没错,那我只有检查这个循环内的 : 其他鬼咚咚了。 : : j = 1 : do i = 1, 7 : if (A(i).ne.0) then : B(j) = A(i) */这个地方到底应该怎么写?多谢!
|
f***t 发帖数: 2247 | 5 好的,我先查一下这个循环内的其他东西再说。多谢!
【在 B********u 的大作中提到】 : 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
|
f***t 发帖数: 2247 | 6 您好,A在后边不调用了,使用您说的in-place,如何搞这个问题为好?麻烦您就这个
例子,具体写一下可以吗?先谢谢了。
【在 B********u 的大作中提到】 : 你这如果A在这之后不需要的话,甚至可以in-place弄,道理一样,也不用另外搞个B
|
w**d 发帖数: 2334 | 7 好多年没用过Fortran了,印象里也是要初始化变量的,就相当于C里头的分配memory。
你这个B要开始指定长度吗? |
j***6 发帖数: 107 | 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********g 发帖数: 43926 | 9 这个站贴程序经常会被过滤
【在 j***6 的大作中提到】 : 为何会发到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*****g 发帖数: 16352 | 10 看了下,会FORTRAN的好象多是53老将。
★ 发自iPhone App: ChinaWeb 1.1.5
【在 H********g 的大作中提到】 : 这个站贴程序经常会被过滤
|
|
|
w*****g 发帖数: 16352 | 11 蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
★ 发自iPhone App: ChinaWeb 1.1.5
【在 w*****g 的大作中提到】 : 看了下,会FORTRAN的好象多是53老将。 : : ★ 发自iPhone App: ChinaWeb 1.1.5
|
z***i 发帖数: 8285 | 12 老板怀旧。。
蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。
★ 发自iPhone App: ChinaWeb 1.1.5
【在 w*****g 的大作中提到】 : 蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。 : : ★ 发自iPhone App: ChinaWeb 1.1.5
|
j***6 发帖数: 107 | 13 楼主说了,必须是 Fortran
估计是历史遗留问题
: 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。
: ★ 发自iPhone App: ChinaWeb 1.1.5
【在 w*****g 的大作中提到】 : 蟒蛇+熊猫, 一句话的事情,非要自己重新发明轮子。 : : ★ 发自iPhone App: ChinaWeb 1.1.5
|
w*****g 发帖数: 16352 | 14 估计那个撸主不是在改老代码,而是要调用老代码,如果是后者,还不如回去自己好好
写数据接口。
★ 发自iPhone App: ChinaWeb 1.1.5
【在 j***6 的大作中提到】 : 楼主说了,必须是 Fortran : 估计是历史遗留问题 : : : 蟒蛇 熊猫, 一句话的事情,非要自己重新发明轮子。 : : ★ 发自iPhone App: ChinaWeb 1.1.5 :
|
d*********1 发帖数: 1 | 15 https://pyccel.readthedocs.io/
用这个就好
(1
【在 f***t 的大作中提到】 : 求教各位大仙一个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
|