Fortran Coder

查看: 13555|回复: 8
打印 上一主题 下一主题

[求助] 如何使用function重载运算符运算后返回一个数组

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2014-12-7 00:31:30 | 显示全部楼层
照猫画虎还不会?

[Fortran] 纯文本查看 复制代码
Module S
  Interface Operator (.U.)
    Module Procedure Addy
  End Interface Operator (.U.)
Contains
  Function Addy(C1, C2)
    Implicit None
    Integer, Intent (In) :: C1(:), C2(:)
    Integer :: Addy(20)
    Integer :: Arry1(20), Arry2(20)
    Integer I, Len
    Logical :: Flg(20)
    Len = Size(C1)
    Arry1 = -1
    Do I = 1, Len
      Arry1(C1(I)) = C1(I)
    End Do
    Len = Size(C2)
    Arry2 = -2
    Do I = 1, Len
      Arry2(C2(I)) = C2(I)
    End Do
    Addy = -3
    Flg = All(Arry1.Eq.Arry2)
    Print *, Flg
    Addy = Merge(Arry1, Addy, Flg)
  End Function Addy
End Module S
Program Main
  Use S
  Implicit None

  Interface
    Subroutine Random_arr(A)
      Implicit None
      Integer (Kind=4), Intent (Out), Allocatable :: A(:)
    End Subroutine Random_arr
  End Interface


  Integer, Allocatable :: A(:)
  Integer, Allocatable :: B(:)
  Integer Lena, Lenb

  Call Init_random_seed()
  Call Random_arr(A)
  Call Random_arr(B)
  Lena = Size(A)
  Lenb = Size(B)
  Print *, 'A'
  Write (*, 10) A
  Print *, 'B'
  Write (*, 10) B
  10 Format (20I3)

End Program Main
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-25 18:08

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表