我试图将以下fortran 77子程序复制到c ++中。
M2_HOME
这是我的翻译
MAVEN_HOME
错误如下。有人可以帮助我并告诉我如何解决?
subroutine calcul(nb, m, sd, x_min, n, y_w)
common / speed_1 / v_0
common / dat1 / x_m
common / dat2 / x_l0, x_r0, x_lq, e_l, e_r, a1, a2, b1
common / sor_arr / x(6500), y(6500), z(6500)
common / ef_mat / x_f(35000), y_f(35000)
y_m = y_w - rl_h
y_ma = rl_h
y_mi = -rl_h
x_ma = rb_h
x_mi = -rb_h
do 10 i = m, 1, -1
y_y = z(i) - y_m
if (y_y.gt.y_ma) goto 10
if (y_y.le.y_mi) goto 10
c1_s = y(i) / v_0
x_l = x_l0 + e_l*c1_s**a1
x_r = x_r0 + e_r*c1_s**a2
cl_r = x_r - x_l
c2_s = x(i) + x_min
i1 = 1
i2 = nb
i3 = 1
if (mod(i, 2).eq. 0) goto 20
i1 = nb
i2 = 1
i3 = -1
20 do 30 i = i1, i2, i3
r_m1 = float(i - 1)
x_q = c2_s + r_m1*sd - x_l
x_q = x_q * b1 / c1_r + xl_q
x_x = x_q - x_m
if (x_x.gt.x_ma) goto 30
if (x_x.le.x_mi) goto 30
n = n + 1
y_f(n) = y_y
x_f(n) = x_x
30 continue
10 continue
return
end
答案 0 :(得分:4)
这有点疯狂和大胆,但你可以尝试的是初始化你的局部变量。
例如:
struct speed sp = {0};
struct dat1 d1 = {0};
struct dat2 d2 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
如果你真的疯了,你甚至可以考虑使用0以外的其他值 - 实际上这个算法 sense 的东西会很棒!!!
注意:我对Fortran没有丝毫的线索,也没有研究代码的其他问题。