program StudentTask;
type
stud = record
pr: string [ 15 ] ; { Фамилия }
im: string [ 10 ] ; { Имя }
d: integer ; { День рождения }
m: integer ; { Месяц рождения }
r: integer ; { Год рождения }
rv: integer ; { Год поступления }
nk: integer ; { Курс }
ng: string [ 10 ] ; { Группа }
ocinLP: array [ 1 .. 3 , 1 .. 5 ] of integer ; { Оценки }
ser: real ; { Средний балл за последнюю сессию }
end ;
var
FL: array [ 1 .. 50 ] of stud;
N, i, s, p: integer ;
sum: real ;
serGR: real ;
count: integer ;
ch: char ;
begin
serGR : = 0 ;
N : = 0 ;
ch : = 'y' ;
writeln ( 'Please enter students data:' ) ;
{ Ввод списка студентов }
while ( ch = 'y' ) or ( ch = 'Y' ) do
begin
N : = N + 1 ;
writeln ( 'Enter ' , N, '. student:' ) ;
{ Считывание полей по очереди }
readln ( FL[ N] . pr ) ;
readln ( FL[ N] . im ) ;
readln ( FL[ N] . d , FL[ N] . m , FL[ N] . r , FL[ N] . rv , FL[ N] . nk ) ;
readln ( FL[ N] . ng ) ;
writeln ( 'Enter 3 semesters of 5 marks:' ) ;
for s : = 1 to 3 do
begin
for p : = 1 to 5 do
begin
read ( FL[ N] . ocinLP [ s, p] ) ;
end ;
readln ; { Переход на новую строку без пустых скобок () }
end ;
readln ( ch) ;
end ;
{ Вычисление среднего балла за ПОСЛЕДНЮЮ (3-ю) сессию }
for i : = 1 to N do
begin
sum : = 0 ;
for p : = 1 to 5 do
begin
sum : = sum + FL[ i] . ocinLP [ 3 , p] ;
end ;
FL[ i] . ser : = sum / 5.0 ;
serGR : = serGR + FL[ i] . ser ;
end ;
{ Вычисление среднего балла группы }
if N > 0 then
serGR : = serGR / N
else
serGR : = 0 ;
{ Вывод результатов }
writeln ;
writeln ( 'Group average for last session = ' , serGR: 0 : 2 ) ;
writeln ( 'Results list (students with average lower than group average):' ) ;
writeln ( '------------------------------------------------------------' ) ;
count : = 0 ;
for i : = 1 to N do
begin
if FL[ i] . ser < serGR then
begin
count : = count + 1 ;
writeln ( count, '. ' , FL[ i] . pr , ' ' , FL[ i] . im ) ;
writeln ( ' Birth date: ' , FL[ i] . d , '.' , FL[ i] . m , '.' , FL[ i] . r ) ;
writeln ( ' Entry year: ' , FL[ i] . rv , ', Course: ' , FL[ i] . nk , ', Group: ' , FL[ i] . ng ) ;
writeln ( ' Marks for all semesters:' ) ;
for s : = 1 to 3 do
begin
write ( ' Semester ' , s, ': ' ) ;
for p : = 1 to 5 do
begin
write ( FL[ i] . ocinLP [ s, p] , ' ' ) ;
end ;
writeln ; { Переход на новую строку без пустых скобок () }
end ;
writeln ( ' Average for last session: ' , FL[ i] . ser : 0 : 2 ) ;
writeln ;
end ;
end ;
if count = 0 then
writeln ( 'No students with average mark lower than group average.' ) ;
end .
cHJvZ3JhbSBTdHVkZW50VGFzazsKCnR5cGUKICBzdHVkID0gcmVjb3JkCiAgICBwcjogc3RyaW5nWzE1XTsgICAgICAgICAgICAgIHsg0KTQsNC80LjQu9C40Y8gfQogICAgaW06IHN0cmluZ1sxMF07ICAgICAgICAgICAgICB7INCY0LzRjyB9CiAgICBkOiBpbnRlZ2VyOyAgICAgICAgICAgICAgICAgIHsg0JTQtdC90Ywg0YDQvtC20LTQtdC90LjRjyB9CiAgICBtOiBpbnRlZ2VyOyAgICAgICAgICAgICAgICAgIHsg0JzQtdGB0Y/RhiDRgNC+0LbQtNC10L3QuNGPIH0KICAgIHI6IGludGVnZXI7ICAgICAgICAgICAgICAgICAgeyDQk9C+0LQg0YDQvtC20LTQtdC90LjRjyB9CiAgICBydjogaW50ZWdlcjsgICAgICAgICAgICAgICAgIHsg0JPQvtC0INC/0L7RgdGC0YPQv9C70LXQvdC40Y8gfQogICAgbms6IGludGVnZXI7ICAgICAgICAgICAgICAgICB7INCa0YPRgNGBIH0KICAgIG5nOiBzdHJpbmdbMTBdOyAgICAgICAgICAgICAgeyDQk9GA0YPQv9C/0LAgfQogICAgb2NpbkxQOiBhcnJheVsxLi4zLCAxLi41XSBvZiBpbnRlZ2VyOyB7INCe0YbQtdC90LrQuCB9CiAgICBzZXI6IHJlYWw7ICAgICAgICAgICAgICAgICAgIHsg0KHRgNC10LTQvdC40Lkg0LHQsNC70Lsg0LfQsCDQv9C+0YHQu9C10LTQvdGO0Y4g0YHQtdGB0YHQuNGOIH0KICBlbmQ7Cgp2YXIKICBGTDogYXJyYXlbMS4uNTBdIG9mIHN0dWQ7CiAgTiwgaSwgcywgcDogaW50ZWdlcjsKICBzdW06IHJlYWw7CiAgc2VyR1I6IHJlYWw7CiAgY291bnQ6IGludGVnZXI7CiAgY2g6IGNoYXI7CgpiZWdpbgogIHNlckdSIDo9IDA7CiAgTiA6PSAwOwogIGNoIDo9ICd5JzsKCiAgd3JpdGVsbignUGxlYXNlIGVudGVyIHN0dWRlbnRzIGRhdGE6Jyk7CgogIHsg0JLQstC+0LQg0YHQv9C40YHQutCwINGB0YLRg9C00LXQvdGC0L7QsiB9CiAgd2hpbGUgKGNoID0gJ3knKSBvciAoY2ggPSAnWScpIGRvCiAgYmVnaW4KICAgIE4gOj0gTiArIDE7CiAgICB3cml0ZWxuKCdFbnRlciAnLCBOLCAnLiBzdHVkZW50OicpOwogICAgCiAgICB7INCh0YfQuNGC0YvQstCw0L3QuNC1INC/0L7Qu9C10Lkg0L/QviDQvtGH0LXRgNC10LTQuCB9CiAgICByZWFkbG4oRkxbTl0ucHIpOwogICAgcmVhZGxuKEZMW05dLmltKTsKICAgIHJlYWRsbihGTFtOXS5kLCBGTFtOXS5tLCBGTFtOXS5yLCBGTFtOXS5ydiwgRkxbTl0ubmspOwogICAgcmVhZGxuKEZMW05dLm5nKTsKCiAgICB3cml0ZWxuKCdFbnRlciAzIHNlbWVzdGVycyBvZiA1IG1hcmtzOicpOwogICAgZm9yIHMgOj0gMSB0byAzIGRvCiAgICBiZWdpbgogICAgICBmb3IgcCA6PSAxIHRvIDUgZG8KICAgICAgYmVnaW4KICAgICAgICByZWFkKEZMW05dLm9jaW5MUFtzLCBwXSk7CiAgICAgIGVuZDsKICAgICAgcmVhZGxuOyB7INCf0LXRgNC10YXQvtC0INC90LAg0L3QvtCy0YPRjiDRgdGC0YDQvtC60YMg0LHQtdC3INC/0YPRgdGC0YvRhSDRgdC60L7QsdC+0LogKCkgfQogICAgZW5kOwoKICAgIHJlYWRsbihjaCk7CiAgZW5kOwoKICB7INCS0YvRh9C40YHQu9C10L3QuNC1INGB0YDQtdC00L3QtdCz0L4g0LHQsNC70LvQsCDQt9CwINCf0J7QodCb0JXQlNCd0K7QriAoMy3Rjikg0YHQtdGB0YHQuNGOIH0KICBmb3IgaSA6PSAxIHRvIE4gZG8KICBiZWdpbgogICAgc3VtIDo9IDA7CiAgICBmb3IgcCA6PSAxIHRvIDUgZG8KICAgIGJlZ2luCiAgICAgIHN1bSA6PSBzdW0gKyBGTFtpXS5vY2luTFBbMywgcF07CiAgICBlbmQ7CiAgICBGTFtpXS5zZXIgOj0gc3VtIC8gNS4wOwogICAgc2VyR1IgOj0gc2VyR1IgKyBGTFtpXS5zZXI7CiAgZW5kOwoKICB7INCS0YvRh9C40YHQu9C10L3QuNC1INGB0YDQtdC00L3QtdCz0L4g0LHQsNC70LvQsCDQs9GA0YPQv9C/0YsgfQogIGlmIE4gPiAwIHRoZW4KICAgIHNlckdSIDo9IHNlckdSIC8gTgogIGVsc2UKICAgIHNlckdSIDo9IDA7CgogIHsg0JLRi9Cy0L7QtCDRgNC10LfRg9C70YzRgtCw0YLQvtCyIH0KICB3cml0ZWxuOwogIHdyaXRlbG4oJ0dyb3VwIGF2ZXJhZ2UgZm9yIGxhc3Qgc2Vzc2lvbiA9ICcsIHNlckdSOjA6Mik7CiAgd3JpdGVsbignUmVzdWx0cyBsaXN0IChzdHVkZW50cyB3aXRoIGF2ZXJhZ2UgbG93ZXIgdGhhbiBncm91cCBhdmVyYWdlKTonKTsKICB3cml0ZWxuKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTsKCiAgY291bnQgOj0gMDsKICBmb3IgaSA6PSAxIHRvIE4gZG8KICBiZWdpbgogICAgaWYgRkxbaV0uc2VyIDwgc2VyR1IgdGhlbgogICAgYmVnaW4KICAgICAgY291bnQgOj0gY291bnQgKyAxOwogICAgICB3cml0ZWxuKGNvdW50LCAnLiAnLCBGTFtpXS5wciwgJyAnLCBGTFtpXS5pbSk7CiAgICAgIHdyaXRlbG4oJyAgIEJpcnRoIGRhdGU6ICcsIEZMW2ldLmQsICcuJywgRkxbaV0ubSwgJy4nLCBGTFtpXS5yKTsKICAgICAgd3JpdGVsbignICAgRW50cnkgeWVhcjogJywgRkxbaV0ucnYsICcsIENvdXJzZTogJywgRkxbaV0ubmssICcsIEdyb3VwOiAnLCBGTFtpXS5uZyk7CiAgICAgIAogICAgICB3cml0ZWxuKCcgICBNYXJrcyBmb3IgYWxsIHNlbWVzdGVyczonKTsKICAgICAgZm9yIHMgOj0gMSB0byAzIGRvCiAgICAgIGJlZ2luCiAgICAgICAgd3JpdGUoJyAgICAgU2VtZXN0ZXIgJywgcywgJzogJyk7CiAgICAgICAgZm9yIHAgOj0gMSB0byA1IGRvCiAgICAgICAgYmVnaW4KICAgICAgICAgIHdyaXRlKEZMW2ldLm9jaW5MUFtzLCBwXSwgJyAnKTsKICAgICAgICBlbmQ7CiAgICAgICAgd3JpdGVsbjsgeyDQn9C10YDQtdGF0L7QtCDQvdCwINC90L7QstGD0Y4g0YHRgtGA0L7QutGDINCx0LXQtyDQv9GD0YHRgtGL0YUg0YHQutC+0LHQvtC6ICgpIH0KICAgICAgZW5kOwogICAgICB3cml0ZWxuKCcgICBBdmVyYWdlIGZvciBsYXN0IHNlc3Npb246ICcsIEZMW2ldLnNlcjowOjIpOwogICAgICB3cml0ZWxuOwogICAgZW5kOwogIGVuZDsKCiAgaWYgY291bnQgPSAwIHRoZW4KICAgIHdyaXRlbG4oJ05vIHN0dWRlbnRzIHdpdGggYXZlcmFnZSBtYXJrIGxvd2VyIHRoYW4gZ3JvdXAgYXZlcmFnZS4nKTsKCmVuZC4=