program Console6
implicit none
character(132) :: buff
character(8) :: date0, time0, date1, time1
character(80) :: email_address, dummy1, dummy2, dummy3
character(30), allocatable :: name(:, :)
integer, allocatable :: no(:), id(:), point(:)
integer :: i, ndata, ipos0, ipos1, io
real :: average
open(10, file = 'test.csv')
open(11, file = 'output.txt')
ndata = 0
do
read(10, *, iostat = io)
if (io == -1) exit ! end of file
ndata = ndata + 1
end do
print *, 'Number of data =', ndata
allocate(no(ndata), id(ndata), point(ndata), name(2, ndata))
rewind(10)
do i = 1, ndata
read(10, '(a)') buff
read(buff, *) no(i)
ipos0 = index(buff, ',') + 1
ipos1 = index(buff(ipos0:), ' ') + ipos0 - 2
read(buff(ipos0:ipos1), '(a)') date0
ipos0 = ipos1 + 2
ipos1 = index(buff(ipos0:), ',') + ipos0 - 1
read(buff(ipos0:ipos1), '(a)') time0
ipos0 = ipos1 + 1
ipos1 = index(buff(ipos0:), ' ') + ipos0 - 2
read(buff(ipos0:ipos1), '(a)') date1
ipos0 = ipos1 + 2
ipos1 = index(buff(ipos0:), ',') + ipos0 - 1
read(buff(ipos0:ipos1), '(a)') time1
ipos0 = ipos1 + 1
print *, buff(ipos0:)
read(buff(ipos0:), *) email_address, dummy1, id(i), dummy2, name(:, i), dummy3, point(i)
end do
average = sum(point) / ndata
do i = 1, ndata
write(11, '(i3, 1x, a, 1x, a, i5)') id(i), trim(name(1, i)), trim(name(2, i)), point(i)
end do
write(11, '(a, f10.2)') '平均点', average
end program Console6
ICAgIHByb2dyYW0gQ29uc29sZTYKICAgICAgICBpbXBsaWNpdCBub25lCiAgICAgICAgY2hhcmFjdGVyKDEzMikgOjogYnVmZgogICAgICAgIGNoYXJhY3Rlcig4KSA6OiBkYXRlMCwgdGltZTAsIGRhdGUxLCB0aW1lMQogICAgICAgIGNoYXJhY3Rlcig4MCkgOjogZW1haWxfYWRkcmVzcywgZHVtbXkxLCBkdW1teTIsIGR1bW15MwogICAgICAgIGNoYXJhY3RlcigzMCksIGFsbG9jYXRhYmxlIDo6IG5hbWUoOiwgOikKICAgICAgICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBubyg6KSwgaWQoOiksIHBvaW50KDopCiAgICAgICAgaW50ZWdlciA6OiBpLCBuZGF0YSwgaXBvczAsIGlwb3MxLCBpbwogICAgICAgIHJlYWwgOjogYXZlcmFnZQogICAgICAgIAogICAgICAgIG9wZW4oMTAsIGZpbGUgPSAndGVzdC5jc3YnKQogICAgICAgIG9wZW4oMTEsIGZpbGUgPSAnb3V0cHV0LnR4dCcpCiAgICAgICAgCiAgICAgICAgbmRhdGEgPSAwCiAgICAgICAgZG8gCiAgICAgICAgICAgIHJlYWQoMTAsICosIGlvc3RhdCA9IGlvKQogICAgICAgICAgICBpZiAoaW8gPT0gLTEpIGV4aXQgISBlbmQgb2YgZmlsZSAgICAgIAogICAgICAgICAgICBuZGF0YSA9IG5kYXRhICsgMQogICAgICAgIGVuZCBkbwogICAgICAgIHByaW50ICosICdOdW1iZXIgb2YgZGF0YSA9JywgbmRhdGEKICAgICAgICBhbGxvY2F0ZShubyhuZGF0YSksIGlkKG5kYXRhKSwgcG9pbnQobmRhdGEpLCBuYW1lKDIsIG5kYXRhKSkKICAgICAgICAKICAgICAgICByZXdpbmQoMTApCiAgICAgICAgZG8gaSA9IDEsIG5kYXRhCiAgICAgICAgICAgIHJlYWQoMTAsICcoYSknKSBidWZmCiAgICAgICAgICAgIHJlYWQoYnVmZiwgKikgbm8oaSkKICAgICAgICAgICAgCiAgICAgICAgICAgIGlwb3MwID0gaW5kZXgoYnVmZiwgJywnKSArIDEKICAgICAgICAgICAgaXBvczEgPSBpbmRleChidWZmKGlwb3MwOiksICcgJykgKyBpcG9zMCAtIDIKICAgICAgICAgICAgcmVhZChidWZmKGlwb3MwOmlwb3MxKSwgJyhhKScpIGRhdGUwIAogICAgICAgICAgICBpcG9zMCA9IGlwb3MxICsgMgogICAgICAgICAgICBpcG9zMSA9IGluZGV4KGJ1ZmYoaXBvczA6KSwgJywnKSArIGlwb3MwIC0gMQogICAgICAgICAgICByZWFkKGJ1ZmYoaXBvczA6aXBvczEpLCAnKGEpJykgdGltZTAKICAgICAgICAgICAgCiAgICAgICAgICAgIGlwb3MwID0gaXBvczEgKyAxCiAgICAgICAgICAgIGlwb3MxID0gaW5kZXgoYnVmZihpcG9zMDopLCAnICcpICsgaXBvczAgLSAyCiAgICAgICAgICAgIHJlYWQoYnVmZihpcG9zMDppcG9zMSksICcoYSknKSBkYXRlMQogICAgICAgICAgICBpcG9zMCA9IGlwb3MxICsgMgogICAgICAgICAgICBpcG9zMSA9IGluZGV4KGJ1ZmYoaXBvczA6KSwgJywnKSArIGlwb3MwIC0gMQogICAgICAgICAgICByZWFkKGJ1ZmYoaXBvczA6aXBvczEpLCAnKGEpJykgdGltZTEKICAgICAgICAgICAgCiAgICAgICAgICAgIGlwb3MwID0gaXBvczEgKyAxCiAgICAgICAgICAgIHByaW50ICosIGJ1ZmYoaXBvczA6KQogICAgICAgICAgICByZWFkKGJ1ZmYoaXBvczA6KSwgKikgZW1haWxfYWRkcmVzcywgZHVtbXkxLCBpZChpKSwgZHVtbXkyLCBuYW1lKDosIGkpLCBkdW1teTMsIHBvaW50KGkpCiAgICAgICAgZW5kIGRvICAgIAoKICAgICAgICBhdmVyYWdlID0gc3VtKHBvaW50KSAvIG5kYXRhCiAgICAgICAgCiAgICAgICAgZG8gaSA9IDEsIG5kYXRhCiAgICAgICAgICAgIHdyaXRlKDExLCAnKGkzLCAxeCwgYSwgMXgsIGEsIGk1KScpIGlkKGkpLCB0cmltKG5hbWUoMSwgaSkpLCB0cmltKG5hbWUoMiwgaSkpLCBwb2ludChpKQogICAgICAgIGVuZCBkbyAgICAKICAgICAgICB3cml0ZSgxMSwgJyhhLCBmMTAuMiknKSAgJ+W5s+Wdh+eCuScsIGF2ZXJhZ2UgICAgICAgCiAgICBlbmQgcHJvZ3JhbSBDb25zb2xlNgo=