24小时热门版块排行榜    

查看: 692  |  回复: 4

zyj8119

木虫 (著名写手)

[交流] 【求助】一个程序运行不出来,请教。。。。【已完结】

CODE:
PROGRAM main
IMPLICIT NONE
INTERFACE OPERATOR(-)
FUNCTION oct_minus(a,b) RESULT(c)
INTEGER,INTENT(in)::a,b
INTEGER::c
END FUNCTION oct_minus
END INTERFACE
INTEGER::octa,octb,octc
OPEN(1,FILE='MYF1.OUT')
octa=2557;octb=2446;octc=octa-octb
WRITE(1,*)octa,octb,octc
octa=7654321;octb=1234567;octc=octa-octb
WRITE(1,*)octa,octb,octc
END PROGRAM main
!
FUNCTION oct_minus(a,b) RESULT(c)
INTEGER,DIMENSION(1:10)::work1,work2,work3
INTEGER::a,b,c,i,k,temp,octcarry
octcarry=0;work1=separate(a);work2=separate(b)
DO i=10,1,-1
IF(work(i)   work1(i)=8+work1(i);work1(i-1)=work1(i-1)-1
END IF
temp=work1(i)-work2(i)+octcarry
work3(i)=MOD(temp,8);octcarry=temp/8
END DO
DO i=1,10
IF(work3(i)/=0)THEN
  k=i;EXIT
END IF
END DO
c=0
DO i=k,10
c=c*10+work3(i)
END DO
CONTAINS
FUNCTION separate(a) RESULT(work)
INTEGER::a,k,tmp,work(10)
work=0;tmp=a;k=10
DO WHILE(tmp/=0)
  work(k)=MOD(tmp,10);tmp=tmp/10;k=k-1
END DO
END FUNCTION separate
END FUNCTION oct_minus

[ Last edited by nono2009 on 2010-9-30 at 08:25 ]
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by zyj8119 at 2010-09-24 15:56:32:
[code]PROGRAM main
IMPLICIT NONE
INTERFACE OPERATOR(-)
FUNCTION oct_minus(a,b) RESULT(c)
INTEGER,INTENT(in)::a,b
INTEGER::c
END FUNCTION oct_minus
END INTERFACE
INTEGER:cta,octb,octc
...

--------------------Configuration: rrr - Win32 Debug--------------------
Compiling Fortran...
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\My Projects\rrr.f90
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\My Projects\rrr.f90(4) : Error: The type/rank for the arguments of this specific function for a defined OPERATOR redefines intrinsic expression operations.   [OCT_MINUS]
FUNCTION oct_minus(a,b) RESULT(c)
----------^
Error executing df.exe.

rrr.obj - 1 error(s), 0 warning(s)
好好学习,天天向上。
2楼2010-09-24 15:59:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

★
nono2009(金币+1):鼓励交流 2010-09-30 08:24:40
rrr.f90里面你重新定义了内部运算符。

我个人觉得你不需要重新定义减号运算符,直接oct_minus就行了,毕竟你不是针对自定义类型来做减法。
3楼2010-09-25 14:26:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
余泽成:请不要在专业版用纯表回复,下不为例! 2010-09-25 23:08:40
4楼2010-09-25 14:30:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

nono2009:欢迎分享解决方案。 2010-09-30 08:24:55
此问题解决,结贴。
好好学习,天天向上。
5楼2010-09-28 08:41:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
信息提示
请填处理意见