作者azureus (四月雪~)
看板Fortran
标题Re: [问题] 谁可以帮忙一下.....
时间Tue Jun 16 10:33:40 2009
※ 引述《joyshe78904 (几楼)》之铭言:
: 这真的是我朋友要交的作业= ="
: 作业内容:使用Fortran写一只程式,此程式可开启同目录下之成绩档grade.txt,
: 并且将成绩档中的资料,以学生ID由小到大进行排列,并存回grade.txt。
: grade.txt档的格式,包含四个栏位,分别为id:01、math:90、art:80、phy:70
: 每个资料栏位请用6格放置,并放置於6格中的最左边。
: 范例grade.txt
: id math art phy
: 01 90 70 60
: 03 70 60 45
: 02 30 40 50
program dograde
integer,parameter :: num=20, sn=5
type :: member
integer :: id, psum=0
end type
type :: grades
integer :: sub(sn)=0
end type
type(grades) :: psub(num),totalave
type(member) :: person(num)
open(10,file="grade.txt",form="unformatted",access="direct",recl=4*sn*num)
do i=1,num
person(i)%id=i
read(10,rec=i) psub(i)
do j=1,sn
totalave%sub(j) = totalave%sub(j) + psub(i)%sub(j)
person(i)%psum = person(i)%psum + psub(i)%sub(j)
end do
end do
! 每个人总成绩
do i=1,num
write(*,*) person(i)%id, person(i)%psum
end do
! 各科平均
do j=1,sn
write(*,*) real(totalave)/read(num)
end do
stop
end program
其他输出部分自己处理吧~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.179.65