桂圆莲子汤 发表于 2017-3-3 11:22:43

读取一组数,计算后结果为零

对不起,菜鸟从中间起步,不懂的太多,求教:
读取csv格式文件,并进行计算,最后输出CSV格式文件,但是输出数据为0,应该是读取数据 的问题,但是我不知道怎么改,
数据如图:
   数据共48行,11列

程序如下:

      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
运行结果如下:




vvt 发表于 2017-3-3 13:03:04

第一步,请用记事本打开 farm_fm.csv 文件,删除其中全部的百分号
第二步,用以下代码:

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
页: [1]
查看完整版本: 读取一组数,计算后结果为零