作者laa7352 (Laa)
看板Fortran
标题Re: [问题] 有谁会写这题FORTRAN?? 拜托了!!
时间Fri Jun 12 16:45:57 2009
※ 引述《joyshe78904 (几楼)》之铭言:
: 光碟中\program\chap09\grades.bin 中
: 以二进位放是储存了全班20位同学的成绩,
: 档案中紧密的储存了20位同学的国文.英文.数学.自然.社会这5个科目的成绩,
: 每个成绩使用长整术方法(占4btyes),
: 依序先存放1号同学的5个科目,
: 在存放2号同学的五个科目成绩.....
: 最後存放20号同学的5个科目成绩,
: 请写作程式读出全班同学的成绩,
: 并计算每位同学的总分级全班的各科平均
: 这是我朋友要交作业的
: 拜托大大了 因为我也看不懂 囧
binary格式的读取
integer ist,icur,isco,data,irec
real rsco
parameter (ist=20,icur=5) ! ist学生人数 icur科目数
dimension isco(ist,icur),data(icur)
c ! isco这阵列是拿来存所有学生科目分数
open(11,file='grades.bin',status='old'
2 ,form='unformatted',access='direct'
3 ,recl=icur*4) ! 把五个科目设成一个rec
! 读一次就是读一个学生的分数
c
irec=1 ! irec会从1跑到20
do i=1,ist ! 当irec=1 用data取学生1的五科分数……
read(11,rec=irec)data ! 再用do loop把成绩放到isco里
do j=1,5 ! 要计算或平均什麽的就用isco这阵列来做
isco(i,j)=data(j)
enddo
irec=irec+1
enddo
接下来的平均计算应该很简单吧
自己嚐试看看
不行再上来问
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.137.32.73
1F:推 joyshe78904:我朋友说他都没去上课 後面他也不会= =+ 06/12 17:07
看一下Fortran95里阵列的叙述吧
就以上面写的程式来看
isco是放学生成绩
国文 英文 数学 自然 社会
学生1 isco(1,1) isco(1,2) isco(1,3) isco(1,4) isco(1,5)
学生2 isco(2,1) isco(2,2) isco(2,3) isco(2,4) isco(2,5)
..... ............................
..... ............................
学生20 isco(20,1) isco(20,2) isco(20,3) isco(20,4) isco(20,5)
所以要算某学生(i)的总成绩
total(i)=isco(i,1)+isco(i,2)+isco(i,3)....+isco(i,5)
要算某科(j)平均
averge(j)=float(isco(1,j)+isco(2,j)+....isco(20,j))/float(ist)
写成do loop吧…
※ 编辑: laa7352 来自: 61.228.149.127 (06/12 20:33)
2F:→ spaceodyssey:你朋友不会就是你吧? 06/12 20:31
3F:→ agody:要用unformatted还是binary有一点差,要看原始档是否是 06/13 00:01
4F:→ agody:用fortran写入,写入时是否选unformatted,这部分要小心 06/13 00:02
5F:推 joyshe78904:不好意思 真的是我朋友 06/13 00:07
6F:→ joyshe78904:我学完C++之後 就忘了FORTRAN 不得已才帮他来找的 06/13 00:08
7F:→ joyshe78904:不过还是谢谢大大的帮忙!! 好像是今天截止 06/13 00:10
8F:→ joyshe78904:来不及就算了 囧... 06/13 00:10