Fortran Coder

查看: 17162|回复: 6
打印 上一主题 下一主题

[求助] 程序出问题

[复制链接]

5

帖子

2

主题

0

精华

新人

F 币
22 元
贡献
13 点
跳转到指定楼层
楼主
发表于 2014-2-19 10:44:24 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
新建文件夹.zip (2.14 KB, 下载次数: 2)
[Fortran] 纯文本查看 复制代码
module typedef
  type sm
    real(kind=4) v,n1
  end type
end module

program main
  use typedef
  implicit none
  type(sm)::s1(100),s2(100),s3(100),s4(100),s5(100),s6(100),s7(100),s8(100),s9(100),s10(100),s11(100),s12(100),s13(100)
  character::file1="length.txt",file2="length(2).txt",file3="length(3).txt",file4="length(4).txt",file5="length(5).txt",file6="length(6).txt"
  integer::i,status=0
  real::d1(50),d2(50),d3(50),d4(50),d5(50),d6(50)

  forall(i=1:50) 
     d1(i)=0 
         d2(i)=0 
         d3(i)=0 
         d4(i)=0 
         d5(i)=0 
         d6(i)=0
  end forall

  open(11,file="length1.txt",status="old")
  do i=1,50
    read(11,*,iostat=status) s1(i)%v,s1(i)%n1
        if(status/=0) exit
        d1(s1(i)%v)=s1(i)%n1
                write(*,*) s1(i)%v,s1(i)%n1

  end do


  open(12,file="length(2).txt",status="old")
 do i=1,50
    read(12,*,iostat=status) s2(i)%v,s2(i)%n1
                d2(s2(i)%v)=s2(i)%n1
        if(status/=0) exit

  end do


    open(13,file="length(3).txt",status="old")
  do i=1,50
    read(13,*,iostat=status) s3(i)%v,s3(i)%n1
                d3(s3(i)%v)=s3(i)%n1
                if(status/=0) exit
  end do

    open(14,file="length(4).txt",status="old")
do i=1,50
    read(14,*,iostat=status) s4(i)%v,s4(i)%n1
                d4(s4(i)%v)=s4(i)%n1
                if(status/=0) exit
  end do

    open(15,file="length(5).txt",status="old")
 do i=1,50
    read(15,*,iostat=status) s5(i)%v,s5(i)%n1
                d5(s5(i)%v)=s5(i)%n1
                if(status/=0) exit
  end do

    open(16,file="length(6).txt",status="old")
do i=1,50
    read(16,*,iostat=status) s6(i)%v,s6(i)%n1
                d6(s6(i)%v)=s6(i)%n1
                if(status/=0) exit
  end do


  open(17,file="length7.txt")
do i=1,50
   write(17,*) i, real(d1(i)+d2(i)+d3(i)+d4(i)+d5(i)+d6(i))/real(6)
  end do

  end program


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

5

帖子

2

主题

0

精华

新人

F 币
22 元
贡献
13 点
沙发
 楼主| 发表于 2014-2-19 11:08:41 | 显示全部楼层
越界问题,是因为先执行了
d6(s6(i)%v)=s6(i)%n1
然后再判断的是否文件结束了。所以上面这句代码越界。

5

帖子

2

主题

0

精华

新人

F 币
22 元
贡献
13 点
板凳
 楼主| 发表于 2014-2-19 13:06:41 | 显示全部楼层
chuxf 发表于 2014-2-19 11:36
你是想统计对应整数的数据的平均值。那么就不能统一除以 6,因为某些整数只出现了2次。

我为你重写了整个 ...

谢谢,这个可以运行的,:)

5

帖子

2

主题

0

精华

新人

F 币
22 元
贡献
13 点
地板
 楼主| 发表于 2014-2-19 13:07:12 | 显示全部楼层
lm_lxt 发表于 2014-2-19 11:47
77行代码变成39行,赞!

嗯,是的。厉害啊!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-6 10:49

Powered by Tencent X3.4

© 2013-2024 Tencent

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