hanshikai 发表于 2014-5-22 17:14:18

自定义类型

[PROGRAM AA
IMPLICIT NONE

TYPE::ND !自定义类型:节点
INTEGER ::ID !节点编号
REAL ::X,Y !节点坐标
ENDTYPE

TYPE::EL !自定义类型:单元
INTEGER::ID !单元编号
! TYPE(ND%X)::N1
! TYPE(ND)::N1,N2
TYPE(ND)::N !组成单元的节点,为ND类型,将包含三个数据,读取时,只用到X,Y这两个
! TYPE(ND)%ID::N !不能这样定义
ENDTYPE


TYPE(ND)::ALLND(1,1)
TYPE(EL)::ALLEL(1,1)

OPEN(11,FILE="T.DAT")
READ(11,*) ALLND%ID, ALLND%X, ALLND%Y
!READ(11,*) ALLEL
!READ(11,*) ALLEL%NUM,ALLEL%ND%X,ALLEL%ND%Y
READ(11,*)ALLEL%ID, ALLEL%N%X, ALLEL%N%Y
!READ(11,*)ALLEL
PRINT*,ALLND
PRINT*,ALLEL

END

数据:
第一行:6 0.33 0.12
第二行:3 5 7

运行的结果是第二行出来四个数,我期望的是3个,在第一个后面多出一个0

[被我注释掉的都是验证过不能用的]

fcode 发表于 2014-5-22 17:21:02

         60.3300000      0.1200000
         3         0   5.000000       7.000000
请按任意键继续. . .

你希望的是什么样子?

hanshikai 发表于 2014-5-22 17:22:32

上面注释有错啊.
TYPE(ND)::N !组成单元的节点,为ND类型,将包含三个数据,读取时,只用到X,Y这两个
应该是用到两个ND的ID,EL的定义有问题

不过这个应该不是最后输出错误的原因

hanshikai 发表于 2014-5-22 17:26:42

fcode 发表于 2014-5-22 17:21
60.3300000      0.1200000
         3         0   5.000000       7.000000
请按任意键 ...

第二行 3 5 7

fcode 发表于 2014-5-22 17:28:30

PRINT*,ALLEL
改为
PRINT*,ALLEL%ID, ALLEL%N%X, ALLEL%N%Y

hanshikai 发表于 2014-5-22 17:30:57

fcode 发表于 2014-5-22 17:28
PRINT*,ALLEL
改为
PRINT*,ALLEL%ID, ALLEL%N%X, ALLEL%N%Y

ALLE是包含四个元素的,因此直接输出会有四个
got it !
页: [1]
查看完整版本: 自定义类型