24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2782  |  回复: 34
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
zyj8119(金币+1, 程序强帖+1): 见识了! 2011-02-25 16:43:43
引用回帖:
Originally posted by 阿黛拉 at 2011-02-25 09:23:25:
您好,非常感谢您的帮助。
还有个问题想请您帮助解决---如您所看到,比如说有38个ions,前10个ions是一组,后28个是一组, 举例15  0.512  0.569  0.717-  27 2.79  36 2.79  37 2.79   8 2.80   6 2.80  13 ...

大概是这个样子,如果我没有理解错的话。
CODE:
program ex

implicit none
character(len = 128) :: line, fm
integer :: ios, len_line, i, j, ion_num, ion_tmp
real, dimension(5000) :: table
integer, dimension(5000) :: ion
integer, dimension(5000) :: ion_table ! ion in table
integer, parameter :: ion_pos = 10
real :: sum_1, sum_2, sum_3 ! ion_table < 10; ion_table > 28; ion_table > 10 & ion_table < 28
integer :: i_1, i_2, i_3

do
   read (*,'(a)', iostat = ios) line
   if (ios < 0) exit
   if (index(line, 'nearest neighbor table') /= 0) exit
end do

j = 0

do
   read (*,'(a)', iostat = ios) line
   if (ios < 0) exit
   if (index(line, 'LATTYP') /= 0) exit
   if (len(trim(line)) == 0) cycle
   len_line = len(trim(line(27:)))
   write(fm,'(a,i0,a)') '(', len_line/9,'(tr1,i3,tr1,f4.2))'
   read (line(27:), fm) (ion_table(i), table(i), i=j+1,j+len_line/9)
   read(line, '(tr1,i3)') ion_tmp
   if (ion_tmp /= 0) ion_num = ion_tmp
   do i=j+1, j+len_line/9
      ion(i) = ion_num
   end do
   j = j + len_line/9
end do

write (*,'(i3,tr2,i3,tr2,f4.2)') (ion(i), ion_table(i), table(i), i= 1, j)

sum_1 = 0.0
sum_2 = 0.0
sum_3 = 0.0
i_1 =0
i_2 =0
i_3 =0

do i=1,j
   if (ion(i) <= ion_pos) then  ! ion <= 10
      if (ion_table(i) <= ion_pos) then ! ion_table <= 10
         sum_1 = sum_1 + table(i)
         i_1 = i_1 + 1
         write(1,'(i3,tr2,i3,tr2,f4.2)') ion(i), ion_table(i), table(i)
      else
         sum_3 = sum_3 + table(i) ! ion_table > 10
         i_3 = i_3 + 1
         write(3,'(i3,tr2,i3,tr2,f4.2)') ion(i), ion_table(i), table(i)
      end if
   else ! ion > 10
      if (ion_table(i) >= (ion(j) - ion_pos)) then ! ion_table >= 28
         sum_2 = sum_2 + table(i)
         i_2 = i_2 + 1
         write(2,'(i3,tr2,i3,tr2,f4.2)') ion(i), ion_table(i), table(i)
      else
         sum_3 = sum_3 + table(i) ! ion_table < 28
         i_3 = i_3 + 1
         write(3,'(i3,tr2,i3,tr2,f4.2)') ion(i), ion_table(i), table(i)
      end if
   end if
end do

write(*,*) sum(table(1:j))/j

print *, sum_1, i_1, sum_2, i_2, sum_3, i_3

write(*,*) sum_1/i_1, sum_2/i_2, sum_3/i_3

end program ex

[ Last edited by snoopyzhao on 2011-2-25 at 11:08 ]
21楼2011-02-25 10:57:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 阿黛拉 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见