找回密码
 注册
Simdroid-非首页
查看: 140|回复: 7

[3. Fortran] fortran处理数据程序,哪位高人帮看下,问题在哪儿

[复制链接]
发表于 2010-11-12 19:38:59 | 显示全部楼层 |阅读模式 来自 甘肃兰州
数据文件我传上了,希望处理成只有数据,而没有文字部分的。编的程序不知道是什么问题,得不到想要的结果。

希望大家帮忙看下问题在哪儿,第一次写程序,多给提些宝贵意见。谢谢帮忙!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2010-11-12 19:43:26 | 显示全部楼层 来自 甘肃兰州
Simdroid开发平台
数据好像没传上,重新传一下,程序直接附上,
PROGRAM MAIN
IMPLICIT NONE
INTEGER I,J
CHARACTER(LEN=20)::INPUT_FILENAME
LOGICAL IF_FILE_EXITS
REAL,DIMENSION(100,5) :: VALUE     
CHARACTER(LEN=80)::STRING            
!---------------------------------------------------------------------------------------------
   INPUT_FILENAME='shuju.dat'         
   INQUIRE(FILE=INPUT_FILENAME,EXIST=IF_FILE_EXITS)   
   IF(.NOT.IF_FILE_EXITS) THEN        
     PRINT*,' 此数据文件不存在!!!'   
   ENDIF
OPEN ( 10, FILE="shuju.dat",STATUS="OLD")
OPEN ( 11, FILE="shujuchulihou.dat")
DO I=1, 100
    READ ( 10, "(A80)" ) STRING                         !把原始数据,一行行地作为字符串读入。
    READ ( STRING, "(5(1X,f15.8))") (VALUE(I,J),J=1,5)  !从内部文件string,再读取数据
    WRITE( 11,"(5(1X,f15.8))")(VALUE(I,J),J=1,5)   
END DO
CLOSE(10)
CLOSE(11)
STOP
END PROGRAM MAIN

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2010-11-12 19:46:03 | 显示全部楼层 来自 甘肃兰州
数据也直接附上,方便大家看。


Cyclic Acquisition      Time: 1949.5249 Sec 11/8/2010 7:14:01 PM
Stored at:  422 cycle   Stored for:  2 segments
Points:  30
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
1948.759 -0.70538342 -1.4510491 144.92821 0.28582162
1948.7673 -0.69798857 -1.405068 144.92659 0.28533018
1948.9167 -0.91902941 -10.413703 144.9238 0.31273949
1948.925 -0.90807527 -9.6117811 144.92432 0.31158468
1948.9333 -0.89314342 -8.6607943 144.92659 0.3100231
1948.9417 -0.87629378 -7.6316447 144.9248 0.30806187
1948.95 -0.85649639 -6.572041 144.92404 0.30540562
1948.9583 -0.833188 -5.517941 144.92558 0.30343458
1948.9666 -0.81164718 -4.5402966 144.92479 0.30036676
1948.9749 -0.78906834 -3.6286428 144.92502 0.29799366
1948.9832 -0.76615959 -2.8480108 144.92599 0.2950401
1948.9915 -0.74526519 -2.2122493 144.92436 0.29189411
1948.9998 -0.7280159 -1.7956445 144.92374 0.28979373
Cyclic Acquisition      Time: 1949.5256 Sec 11/8/2010 7:14:01 PM
Stored at:  423 cycle   Stored for:  2 segments
Points:  30
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
1949.0081 -0.71549803 -1.5259945 144.92595 0.28744203
1949.0164 -0.70593864 -1.4334847 144.92461 0.28549305
1949.2073 -0.84114343 -5.6377592 144.9249 0.3037557
1949.2156 -0.81713766 -4.6396494 144.92479 0.30097356
1949.2239 -0.796085 -3.7530746 144.92175 0.29763517
1949.2322 -0.77428669 -2.9571571 144.92245 0.29506207
1949.2405 -0.75354785 -2.3006315 144.92285 0.29280341
1949.2488 -0.73448002 -1.8377954 144.92444 0.28940183
回复 不支持

使用道具 举报

发表于 2010-11-12 21:15:49 | 显示全部楼层 来自 陕西西安
写了一个很差的程序,凑合可以解决了。楼主看看。
PROGRAM MAIN
IMPLICIT NONE
INTEGER I,J,k
CHARACTER(LEN=20)::INPUT_FILENAME
LOGICAL IF_FILE_EXITS
REAL,DIMENSION(100,30,5) :: VALUE     
CHARACTER(LEN=80)::STRING(5)           
!---------------------------------------------------------------------------------------------
   INPUT_FILENAME='shuju.txt'         
   INQUIRE(FILE=INPUT_FILENAME,EXIST=IF_FILE_EXITS)   
   IF(.NOT.IF_FILE_EXITS) THEN        
     PRINT*,' 此数据文件不存在!!!'  
         stop  
   ENDIF
OPEN ( 10, FILE=INPUT_FILENAME,STATUS="OLD")
OPEN ( 11, FILE="shujuchulihou.dat")
DO I=1, 6
    do j=1,5
                READ ( 10, * ) STRING(j)
        end do
        do j=1,30                     !把原始数据,一行行地作为字符串读入。
      READ ( 10,*) (VALUE(I,J,k),k=1,5)  !从内部文件string,再读取数据
          WRITE( 11,"(5(1X,f15.8))")(VALUE(I,J,k),k=1,5)
        end do
        if(i/=6) read(10,*)
    write(*,*)i
END DO
CLOSE(10)
CLOSE(11)
STOP
END PROGRAM MAIN
回复 不支持

使用道具 举报

 楼主| 发表于 2010-11-12 23:16:25 | 显示全部楼层 来自 甘肃兰州
很感谢jinguangyang ,这么快就了回复,由于刚开始写程序,想把问题简化自己试编一下,所以数据被我简化了,实际的数据很大有几百兆,请问如果不知道数据具体多少行的时候该怎么办。谢谢,
回复 不支持

使用道具 举报

发表于 2010-11-14 09:28:56 | 显示全部楼层 来自 江苏南京
我觉得lz这个问题可以这样取巧来解决。

读取每一行的时候先判断,如果前3个(或者几个)字符的ASCII在48~57,也就是数字的ASCII码范围,则判定该行为数据行,否则舍弃该行。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-11-14 22:55:58 | 显示全部楼层 来自 甘肃兰州
也是好办法,谢谢!
回复 不支持

使用道具 举报

发表于 2011-4-26 11:19:31 | 显示全部楼层 来自 陕西西安
很好很强大
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 11:31 , Processed in 0.042326 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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