fork download
  1. program Facility;
  2.  
  3. {$MODE DELPHI}
  4.  
  5. uses
  6. SysUtils;
  7.  
  8. type
  9. TStudent = record
  10. name: string;
  11. group: string;
  12. grade: double;
  13. scholarship: Integer;
  14. end;
  15.  
  16. var
  17. students: array[1..5] of TStudent;
  18. i: Integer;
  19.  
  20. // процедура заполнения данными студентов
  21. procedure fillData(var arr: array of TStudent);
  22. begin
  23. arr[0].name := 'Иванов И.И.'; arr[0].group := '28ПИБ'; arr[0].grade := 4.7;
  24. arr[1].name := 'Петров П.П.'; arr[1].group := '27ИТб'; arr[1].grade := 3.8;
  25. arr[2].name := 'Сидоров С.С.'; arr[2].group := '27ГУб'; arr[2].grade := 4.3;
  26. arr[3].name := 'Кузнецов К.К.'; arr[3].group := '28ПИЖб'; arr[3].grade := 4.0;
  27. arr[4].name := 'Васильев В.В.'; arr[4].group := '26УСб'; arr[4].grade := 3.5;
  28. end;
  29.  
  30. // процедура вывода студентов с баллом выше 4
  31. procedure printHighGradeStudents(const arr: array of TStudent);
  32. var i: Integer;
  33. begin
  34. Writeln('Студенты с баллом выше 4.0:');
  35. for i := Low(arr) to High(arr) do
  36. if arr[i].grade > 4.0 then
  37. Writeln(arr[i].name, ' (группа: ', arr[i].group, ', балл: ', arr[i].grade:0:1, ')');
  38. end;
  39.  
  40. // процедура вычисления стипендии
  41. procedure calculateScholarships(var arr: array of TStudent);
  42. var i: Integer;
  43. begin
  44. Writeln(#13#10'Список студентов со стипендиями:');
  45. for i := Low(arr) to High(arr) do
  46. begin
  47. if arr[i].grade >= 4.5 then arr[i].scholarship := 3000
  48. else if arr[i].grade >= 4.0 then arr[i].scholarship := 2000
  49. else arr[i].scholarship := 0;
  50.  
  51. if arr[i].scholarship > 0 then
  52. Writeln(arr[i].name, '(', arr[i].group, '): ', arr[i].scholarship, ' руб.');
  53. end;
  54. end;
  55.  
  56. // процедура сортировки студентов по среднему баллу (по убыванию)
  57. procedure sortStudent(var arr: array of TStudent);
  58. var
  59. i, j: Integer;
  60. temp: TStudent;
  61. begin
  62. for i := Low(arr) to High(arr) - 1 do
  63. for j := i + 1 to High(arr) do
  64. if arr[i].grade < arr[j].grade then
  65. begin
  66. temp := arr[i]; arr[i] := arr[j]; arr[j] := temp;
  67. end;
  68.  
  69. Writeln(#13#10'Отсортированный список (по убыванию балла):');
  70. for i := Low(arr) to High(arr) do
  71. Writeln(arr[i].grade:0:1, ' | ', arr[i].name, '(', arr[i].group, ')');
  72. end;
  73.  
  74. begin
  75. // заполянем
  76. fillData(students);
  77.  
  78. // выводим студентов с баллом выше 4
  79. printHighGradeStudents(students);
  80.  
  81. // считаем стипендию
  82. calculateScholarships(students);
  83.  
  84. // сортируем студентов
  85. sortStudent(students);
  86.  
  87. Readln;
  88. end.
  89.  
Success #stdin #stdout 0s 5320KB
stdin
7 21
1 2 547152
1 3 509157
1 4 539282
1 5 541645         
1 6 458433
1 7 385173

2 3 131528
2 4 92735
2 5 150511
2 6 94440
2 7 194542
3 4 216600
3 5 272401
3 6 157176
3 7 124077
4 5 57785
4 6 97323
4 7 242232
5 6 136663
5 7 283862
6 7 147426
stdout
Студенты с баллом выше 4.0:
Иванов И.И. (группа: 28ПИБ, балл: 4.7)
Сидоров С.С. (группа: 27ГУб, балл: 4.3)

Список студентов со стипендиями:
Иванов И.И.(28ПИБ): 3000 руб.
Сидоров С.С.(27ГУб): 2000 руб.
Кузнецов К.К.(28ПИЖб): 2000 руб.

Отсортированный список (по убыванию балла):
4.7 | Иванов И.И.(28ПИБ)
4.3 | Сидоров С.С.(27ГУб)
4.0 | Кузнецов К.К.(28ПИЖб)
3.8 | Петров П.П.(27ИТб)
3.5 | Васильев В.В.(26УСб)