整数规划

coldzhang 2009-04-07 02:16:19
偶对Fortran语言不熟悉,谁能帮偶把下面这段整数规划的子程序(Fortran语言)转成 C++或者C,不胜感谢!



SUBROUTINE SUB0906(M,N,A,IX)
INTEGER M,N,A(M,N),R,C,T,S,LAN,LAD,IX(N)
INTEGER FUN931
N1=N-1
20 DO 25 I=2,M
IF(A(I,N).GE.0) GOTO 25
R=I
GOTO 30
25 CONTINUE
GOTO 100
30 DO 35 K=1,N1
IF(A(R,K).LT.0) GOTO 40
35 CONTINUE
GOTO 105
40 L=K
K1=K+1
IF(K1.EQ.N) GOTO 46
DO 45 J=K1,N1
IF(A(R,J).GE.0) GOTO 45
I=1
50 IF(A(I,J).GE.A(I,L)) GOTO 53
L=J
GOTO 45
53 IF(A(I,J).NE.A(I,L)) GOTO 45
I=I+1
GOTO 50
45 CONTINUE
46 S=1
55 IF(A(S,L).NE.0) GOTO 60
S=S+1
GOTO 55
60 LAN=-A(R,L)
LAD=1
NS=S-1
DO 65 J=1,N1
IF(J.EQ.L) GOTO 65
IF(A(R,J).GE.0) GOTO 65
IF(NS.EQ.0) GOTO 66
DO 70 I=1,NS
IF(A(I,J).NE.0) GOTO 65
70 CONTINUE
66 T=FUN931(A(S,J),A(S,L))
IF(T*A(S,L).NE.A(S,J).OR.T.LE.1) GOTO 80
I=S
75 I=I+1
IF(T*A(I,L).EQ.A(I,J)) GOTO 75
IF(T*A(I,L).GT.A(I,J)) T=T-1
80 IF(-A(R,J)*LAD.LE.T*LAN) GOTO 65
LAN=-A(R,J)
LAD=T
65 CONTINUE
DO 85 J=1,N
IF(J.EQ.L) GOTO 85
C=FUN931(A(R,J)*LAD,LAN)
IF(C.EQ.0) GOTO 85
DO 90 I=1,M
A(I,J)=A(I,J)+C*A(I,L)
90 CONTINUE
85 CONTINUE
GOTO 20
100 IX0=-A(1,N)
DO 110 I=1,N1
110 IX(I)=A(M-N+I+1,N)
WRITE(108,115) IX0
115 FORMAT(1X,4HIX0=,I4)
WRITE(108,120) (IX(I),I=1,N1)
120 FORMAT(1X,3HIX=,20(2X,I4))
WRITE(108,121)
121 FORMAT(///)
GOTO 130
105 WRITE(108,135)
135 FORMAT(1X,4HFAIL)
WRITE(108,122)
122 FORMAT(///)
130 RETURN
END




INTEGER FUNCTION FUN931(U,V)
INTEGER U,V,W
W=U/V
140 IF(W*V.LE.U) GOTO 145
W=W-1
GOTO 140
145 IF(V*(W+1).GT.U) GOTO 150
W=W+1
GOTO 145
150 FUN931=W
RETURN
END
...全文
248 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
nwao7890 2010-07-20
  • 打赏
  • 举报
回复
第一次见到fortain代码,谢谢楼主
hgxinyu 2010-07-20
  • 打赏
  • 举报
回复
不懂帮顶
ForestDB 2010-07-20
  • 打赏
  • 举报
回复
好多goto。
zypblue_sky 2010-07-19
  • 打赏
  • 举报
回复
楼主,我看不懂……
kostion 2009-04-07
  • 打赏
  • 举报
回复
惭愧,代码看不懂
wqvbjhc 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jeff_nie 的回复:]
不懂,帮顶
[/Quote]
jeff_nie 2009-04-07
  • 打赏
  • 举报
回复
不懂,帮顶
fairchild811 2009-04-07
  • 打赏
  • 举报
回复
帮顶,看不懂fortune
sefule 2009-04-07
  • 打赏
  • 举报
回复
int PartInt(int n, int m)
//整数划分
{
if(n<1||m<1)
return 0;
if(n==1||m==1)
return 1;
if( m > n )
return PartInt(n,n);
if(m==n)
return PartInt(n,m-1)+1;
return PartInt(n,m-1)+PartInt(n-m,m);
}
没看代码,转一个.
sherrik 2009-04-07
  • 打赏
  • 举报
回复
两边都发哈
gkimitfk 2009-04-07
  • 打赏
  • 举报
回复
我顶
aaaa3105563 2009-04-07
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶····
bfhtian 2009-04-07
  • 打赏
  • 举报
回复
up
Paradin 2009-04-07
  • 打赏
  • 举报
回复
帮顶
mengde007 2009-04-07
  • 打赏
  • 举报
回复
楼主,我看不懂……
Paradin 2009-04-07
  • 打赏
  • 举报
回复
引用 1 楼 wuyu637 的回复:
还是转FORTAIN板块吧。懂fortain的很可能也懂c++, 懂c++的很可能不懂fortain

ding
  • 打赏
  • 举报
回复
帮顶吧,代码都看不懂的.
Dinelgua 2009-04-07
  • 打赏
  • 举报
回复
有道理
tsoslience 2009-04-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
还是转FORTAIN板块吧。懂fortain的很可能也懂c++, 懂c++的很可能不懂fortain
[/Quote]
ding
beyond071 2009-04-07
  • 打赏
  • 举报
回复
顶...
加载更多回复(1)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧