Fortran Coder

查看: 8497|回复: 1
打印 上一主题 下一主题

[文件读写] 读取一组数,计算后结果为零

[复制链接]

25

帖子

8

主题

0

精华

熟手

F 币
164 元
贡献
104 点
跳转到指定楼层
楼主
发表于 2017-3-3 11:22:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
对不起,菜鸟从中间起步,不懂的太多,求教:
读取csv格式文件,并进行计算,最后输出CSV格式文件,但是输出数据为0,应该是读取数据 的问题,但是我不知道怎么改,
数据如图:
     数据共48行,11列

程序如下:
[Fortran] 纯文本查看 复制代码
      program main
      implicit none
      integer i,j
      integer ::k
      integer ::b,c
      real ::a(48,11)
      real l,m,n,o,p,q,r_fm,s_at,t
      open(12 , file ="/home/iga_qtong/fortran_xcao/farm/farm_fm.csv")
      open(13 , file ="/home/iga_qtong/fortran_xcao/farm/farmout.csv")
                                                                      !  read(12,*) a(i,j)
      read(12,*) ((a(i,j), j=1,c),i=1,b)
         do
         read(12,*,iostat=k) a(48,11)
         if (k/=0) exit
         do i=1,48
         do j=1,11
         l=a(i,1)*a(i,2)*a(i,3)
         m=a(i,1)*a(i,2)*a(i,4)
         n=l/a(i,5)
         o=m/a(i,6)
         p=n*a(i,7)*a(i,8)
         q=o*a(i,7)*a(i,9)
         r_fm=p*a(i,10)*10
         s_at=q*a(i,11)*10
         t=r_fm+s_at
        write(13,*) l,',',m,',',n,',',o,',',p,',',
     &       q,',',r_fm,',',s_at,',',t
       end do
       end do
       end do
      close(12)
      close(13)
      end program main

运行结果如下:




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

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2017-3-3 13:03:04 | 只看该作者
第一步,请用记事本打开 farm_fm.csv 文件,删除其中全部的百分号
第二步,用以下代码:

[Fortran] 纯文本查看 复制代码
program main
  implicit none
  integer k!,i,j
  real ::a(11) !//一维数组就可以了
  real l,m,n,o,p,q,r_fm,s_at,t
  open(12 , file ="/home/iga_qtong/fortran_xcao/farm/farm_fm.csv")
  open(13 , file ="/home/iga_qtong/fortran_xcao/farm/farmout.csv")
  !  read(12,*) a(i,j) !//没用
  !do !//这层循环没用
    !read(12,*,iostat=k) a(48,11) !//此句没用
  do
    read(12,*,ioStat=k) a !//b c 没用值
    if (k/=0) exit
    !do j=1,11 !//这层循环也没用
    l=a(1)*a(2)*a(3)
    m=a(1)*a(2)*a(4)
    n=l/a(5)
    o=m/a(6)
    p=n*a(7)*a(8)
    q=o*a(7)*a(9)
    r_fm=p*a(10)*10
    s_at=q*a(11)*10
    t=r_fm+s_at
    write(13,*) l,',',m,',',n,',',o,',',p,',', &
           q,',',r_fm,',',s_at,',',t
    !end do !//
  end do
  !end do 
  close(12)
  close(13)
end program main
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-4-27 00:07

Powered by Tencent X3.4

© 2013-2024 Tencent

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