请大神帮编个提取目标数据的小程序,感激不尽啊,急用啊!
记录序号 电压/V
244 3.9803
245 3.9602
246 3.9438
注:原始数据这里都不空格
2131 3.9648
2132 3.9447
2133 3.9388
注:原始数据这里都不空格,这里空格方便说明情况而已!
11573 3.9534
11574 3.9332
11575 3.9137
13462 3.9524
13463 3.9323
13464 3.9121
13465 3.9081
15350 3.9506
15351 3.9298
15352 3.9097
15353 3.9013
17241 3.9484
17242 3.9283
17243 3.9081
17244 3.8926
38084 3.7339
38085 3.7116
38086 3.6883
38087 3.6647
38088 3.6437
38089 3.6226
38090 3.6000
38091 3.5779
38092 3.5565
38093 3.5361
38094 3.5135
38095 3.4930
38096 3.4716
38097 3.4508
38098 3.4304
38099 3.4102
38100 3.3901
以后还有类似数据已省略...
请大神帮编个提取目标数据的小程序: 即序号不是(+1)连续时,提取 连续序号段 相应首尾序号对应的电压值,如:我需要提取
3.9803 3.9438
3.9648 3.9388
3.9534 3.9137
3.9524 3.9081
3.9506 3.9013
3.9484 3.8926
3.7339 3.3901
谢谢,如果觉得金币少,可以加金币啊!谢谢! 返回小木虫查看更多
什么语言都可以,只要在win下 或linux下能运行就行。
program Obtain_data
implicit none
integer i,j,k,ii,ierr
integer,allocatable::num( : ) !//序号
real*8,allocatable::voltage( : ) !//电压
character( len=64 ) str,file_name
open( 11,file='wenjian.txt' )
open( 12,file='result.txt' )
!******读取文件总共有多少行********
i=0
read( 11,* )
do
read( 11,*,iostat=ierr ) str
if( ierr/=0 ) exit
i=i+1
end do
allocate( num( i ) )
allocate( voltage ( i ) )
rewind( 11 )
!********将序号和电压存储在数组中********
read( 11,* )
do j=1,i
read( 11," ( a64 )" ) str
read( str,* ) num( j ),voltage( j )
end do
!********找连续序号并提取出第一个和最后一个电压值********
ii=1 !//记录连续序号有多少个
do k=1,i
if( ( k+1 )/=i ) then !//序号不是最后一个
if( num( k+1 )==num( k )+1 ) then
ii=ii+1
else
write( 12,"( 2 ( f8.4,2x ) )" ) voltage( k+1-ii ),voltage( k )
ii=1
end if
else !//序号是最后一个的情况
if( num( k+1 )==num( k )+1 ) then
write( 12,"( 2( f8.4,2x ) )" ) voltage( k+1-ii ),voltage( k+1 )
exit
else
write( 12,"( 2 ( f8.4,2x ) )" ) voltage( k+1-ii ),voltage( k )
exit
end if
end if
end do
deallocate( num )
deallocate( voltage )
close( 11 )
close( 12 )
write( *,* ) 'OK'
read( *,* )
end program Obtain_data
这个程序是用Fortran书写的。输入文件叫wenjian.txt,输出文件叫result.txt,不知道你给的格式是什么样的,所以按照你给你自己做的,如有需要请自行修改其形式,包括输入文件样式等等。我自己做的输入文件上传了,不知道做的对不对。亲测在windows和Linux系统下编译都好使。
输入文件为
记录序号 电压/V
244 3.9803
245 3.9602
246 3.9438
2131 3.9648
2132 3.9447
2133 3.9388
4026 3.9590
4027 3.9388
4028 3.9335
5913 3.9565
5914 3.9363
5915 3.9298
7798 3.9537
7799 3.9335
7800 3.9261
9690 3.9534
9691 3.9329
9692 3.9199
11573 3.9534
11574 3.9332
11575 3.9137
13462 3.9524
13463 3.9323
13464 3.9121
13465 3.9081
15350 3.9506
15351 3.9298
15352 3.9097
15353 3.9013
17241 3.9484
17242 3.9283
17243 3.9081
然后你改成wenjian.txt。PS:小木虫今天传东西一直是error
,