fork download
  1. program StudentTask;
  2.  
  3. type
  4. stud = record
  5. pr: string[15]; { Фамилия }
  6. im: string[10]; { Имя }
  7. d: integer; { День рождения }
  8. m: integer; { Месяц рождения }
  9. r: integer; { Год рождения }
  10. rv: integer; { Год поступления }
  11. nk: integer; { Курс }
  12. ng: string[10]; { Группа }
  13. ocinLP: array[1..3, 1..5] of integer; { Оценки }
  14. ser: real; { Средний балл за последнюю сессию }
  15. end;
  16.  
  17. var
  18. FL: array[1..50] of stud;
  19. N, i, s, p: integer;
  20. sum: real;
  21. serGR: real;
  22. count: integer;
  23. ch: char;
  24.  
  25. begin
  26. serGR := 0;
  27. N := 0;
  28. ch := 'y';
  29.  
  30. writeln('Please enter students data:');
  31.  
  32. { Ввод списка студентов }
  33. while (ch = 'y') or (ch = 'Y') do
  34. begin
  35. N := N + 1;
  36. writeln('Enter ', N, '. student:');
  37.  
  38. { Считывание полей по очереди }
  39. readln(FL[N].pr);
  40. readln(FL[N].im);
  41. readln(FL[N].d, FL[N].m, FL[N].r, FL[N].rv, FL[N].nk);
  42. readln(FL[N].ng);
  43.  
  44. writeln('Enter 3 semesters of 5 marks:');
  45. for s := 1 to 3 do
  46. begin
  47. for p := 1 to 5 do
  48. begin
  49. read(FL[N].ocinLP[s, p]);
  50. end;
  51. readln; { Переход на новую строку без пустых скобок () }
  52. end;
  53.  
  54. readln(ch);
  55. end;
  56.  
  57. { Вычисление среднего балла за ПОСЛЕДНЮЮ (3-ю) сессию }
  58. for i := 1 to N do
  59. begin
  60. sum := 0;
  61. for p := 1 to 5 do
  62. begin
  63. sum := sum + FL[i].ocinLP[3, p];
  64. end;
  65. FL[i].ser := sum / 5.0;
  66. serGR := serGR + FL[i].ser;
  67. end;
  68.  
  69. { Вычисление среднего балла группы }
  70. if N > 0 then
  71. serGR := serGR / N
  72. else
  73. serGR := 0;
  74.  
  75. { Вывод результатов }
  76. writeln;
  77. writeln('Group average for last session = ', serGR:0:2);
  78. writeln('Results list (students with average lower than group average):');
  79. writeln('------------------------------------------------------------');
  80.  
  81. count := 0;
  82. for i := 1 to N do
  83. begin
  84. if FL[i].ser < serGR then
  85. begin
  86. count := count + 1;
  87. writeln(count, '. ', FL[i].pr, ' ', FL[i].im);
  88. writeln(' Birth date: ', FL[i].d, '.', FL[i].m, '.', FL[i].r);
  89. writeln(' Entry year: ', FL[i].rv, ', Course: ', FL[i].nk, ', Group: ', FL[i].ng);
  90.  
  91. writeln(' Marks for all semesters:');
  92. for s := 1 to 3 do
  93. begin
  94. write(' Semester ', s, ': ');
  95. for p := 1 to 5 do
  96. begin
  97. write(FL[i].ocinLP[s, p], ' ');
  98. end;
  99. writeln; { Переход на новую строку без пустых скобок () }
  100. end;
  101. writeln(' Average for last session: ', FL[i].ser:0:2);
  102. writeln;
  103. end;
  104. end;
  105.  
  106. if count = 0 then
  107. writeln('No students with average mark lower than group average.');
  108.  
  109. end.
Success #stdin #stdout 0s 5320KB
stdin
Шевченко
Тарас
15 03 2004 2021 3
301
5 4 5 4 5
4 5 4 4 5
5 5 5 4 4
y
Коваленко
Петро
10 08 2003 2021 3
301
3 4 3 3 4
3 3 4 3 3
3 3 4 3 3
n
stdout
Please enter students data:
Enter 1. student:
Enter 3 semesters of 5 marks:
Enter 2. student:
Enter 3 semesters of 5 marks:

Group average for last session = 3.90
Results list (students with average lower than group average):
------------------------------------------------------------
1. Ковален� Петро
   Birth date: 10.8.2003
   Entry year: 2021, Course: 3, Group: 301
   Marks for all semesters:
     Semester 1: 3 4 3 3 4 
     Semester 2: 3 3 4 3 3 
     Semester 3: 3 3 4 3 3 
   Average for last session: 3.20