ljguang2000 发表于 2005-9-3 21:28:57

怎样输出ASCII数据文件,谢谢!

和一个软件作接口,需要ASCII文件,采用FORTRAN怎么编写文件输出格式!
      10.0   0.0
       2500.0000000000    0.0
       383.33333333333    0.0
       4166.6666666667    0.0
       5250.0000000000    0.0
       6333.3333333333    0.0
       7416.6666666667    0.0
       8500.0000000000      500.0000000000   
       9500.0000000000      83.33333333333   
      10500.0000000000      166.6666666667   
      200.000000000000      416.6666666667   
      53 -250.0000000000   -500.0000000000   
      54 -125.0000000000   -500.0000000000   
      55 0.0               -500.0000000000   
      56125.0000000000   -500.0000000000   
      57250.0000000000   -500.0000000000   
      62875.0000000000   -500.0000000000   
      631000.000000000    0.0
      641000.000000000   -416.6666666667   
      651000.000000000   -333.3333333333

freefrompassion 发表于 2005-9-5 00:19:52

Re:怎样输出ASCII数据文件,谢谢!

我查了一下,基本上数值小于1000的数,小数点后面的位数为10位,大于1000的后面为9位,如果数值为0的直接输出0.0就可以,我想这个格式还是很容易在fortran里面实现的!因为现在手头没有fortran编译器,提供一个思路参考一下!
假设x,y为要输出的值,num为输出的个数
int type=0;
loopi:do i=1,num
if(x==0.and.y==0) type=0;
if(x==0.and.abs( y)<1000)type=1;
if(x==0.and.abs( y)>=1000)type=2;
if(abs( x) <1000.and.abs( y)<1000) type=3;
if(abs( x) <1000.and.abs( y)>=1000)type=4;
if(abs( x) >=1000.and.abs( y)>=1000)type=5;
...其本上把各种可能的格式总结出来,当然如果接口软件对格式要求并不是那么严格的话,也没必要这么复杂的,简单写一个就好了!
selectcase(type)
   case 0:
      write(filename,1)i,0.0,0.0
       1 format(i2,f3.1,f3.1)
   case 1:
      write(filename,2)i,0.0,y
       2 format(i2,f3.1,f14.10)
   case 2:
      write(filename,3)i,0.0,y
      3 foramt(i2,f3.1,f14.9)
   case 3:
      write(filename,4)......
      写出各种格式对应的输出!
end selectcase
enddo loopi
    呵呵,这个输出应该说是很粗糙的了,希望有更好的输出办法可以探讨一下!
页: [1]
查看完整版本: 怎样输出ASCII数据文件,谢谢!