enkov

Зад.3.1. Университет, студенти и оценки

Sep 22nd, 2019
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.60 KB | None | 0 0
  1. /*
  2. Задача 3. (Без въвеждане от конзолата)
  3. 3.1) В един университет се прави малка програма за работа със студенти.
  4. Всеки студент се описва с име, факултетен номер, година на записване и
  5. (средно-аритметичен) успех. Изведете информация за:
  6.   всички студенти;
  7.   студенти, които имат успех над 4.50;
  8.   студентите с максимален и минимален успех, записани през 2018 г.;
  9.   средно-аритметично на успехите за студентите с успех над 5.
  10.  
  11. */
  12.  
  13. #include "stdAfx.h" // при нужда сменете или премахнете този ред, в зависимост от компилатора
  14. #include <iostream>
  15. #include <string>
  16. using namespace std;
  17.  
  18. const int MaxStudents = 50;
  19. // ще работим с 5 студента, без въвеждане
  20.  
  21. // глобална дефиниция на структурата, за да е видима от функциите извън main()
  22. struct Student {
  23.     string Name;
  24.     string FacNo;
  25.     int Year;
  26.     float AvgGrade;
  27. };
  28.  
  29. Student Students[MaxStudents + 1];  // правим и масива Students глобален, MaxStudents+1 елемента, за да работим с 1..MaxStudents
  30.  
  31. void EnterAllStudents(Student StudentsArr[])
  32. {
  33.     StudentsArr[1].Name = "Peter Petrov";
  34.     StudentsArr[1].FacNo = "1901322001";
  35.     StudentsArr[1].Year = 2019;
  36.     StudentsArr[1].AvgGrade = 5.34;
  37.     StudentsArr[2].Name = "Peter Asenov";
  38.     StudentsArr[2].FacNo = "1901322021";
  39.     StudentsArr[2].Year = 2018;
  40.     StudentsArr[2].AvgGrade = 3.55;
  41.     StudentsArr[3].Name = "Angel Angelov";
  42.     StudentsArr[3].FacNo = "1901322031";
  43.     StudentsArr[3].Year = 2017;
  44.     StudentsArr[3].AvgGrade = 4.34;
  45.     StudentsArr[4].Name = "Anna Ivanova";
  46.     StudentsArr[4].FacNo = "1901322002";
  47.     StudentsArr[4].Year = 2018;
  48.     StudentsArr[4].AvgGrade = 4.54;
  49.     StudentsArr[5].Name = "Hasan Ismailov";
  50.     StudentsArr[5].FacNo = "1901322011";
  51.     StudentsArr[5].Year = 2018;
  52.     StudentsArr[5].AvgGrade = 5.14;
  53. }
  54.  
  55. void PrintStudent(Student aStudent, const int id)
  56. {
  57.     cout << " " << id
  58.         << ": Name: " << aStudent.Name
  59.         << ", FacNo: " << aStudent.FacNo
  60.         << ", Year: " << aStudent.Year
  61.         << ", AvgGrade: " << aStudent.AvgGrade << endl;
  62. }
  63.  
  64. void PrintAllStudents(Student StudentsArr[], const int size)
  65. {
  66.     for (int i = 1; i <= size; i++)
  67.         PrintStudent(StudentsArr[i], i);
  68. }
  69.  
  70. void PrintStudentsOverGrade(Student StudentsArr[], const int size, float aGrade)
  71. {
  72.     int num = 0;
  73.     for (int i = 1; i <= size; i++)
  74.         if (StudentsArr[i].AvgGrade > aGrade)
  75.             PrintStudent(StudentsArr[i], ++num);
  76. }
  77.  
  78. void PrintStudentsMinMaxFromYear(Student StudentsArr[], const int size, int aYear)
  79. {
  80.     int minId = 0;
  81.     int maxId = 0;
  82.     for (int i = 1; i <= size; i++)
  83.         // филтруваме само от годината
  84.         if (StudentsArr[i].Year == aYear)
  85.         {
  86.             // първият намерен от годината е мин/макс
  87.             if (minId == 0) minId = i;
  88.             if (maxId == 0) maxId = i;
  89.             // проверяваме за мин/макс
  90.             if (StudentsArr[i].AvgGrade < StudentsArr[minId].AvgGrade)
  91.                 minId = i;
  92.             if (StudentsArr[i].AvgGrade > StudentsArr[maxId].AvgGrade)
  93.                 maxId = i;
  94.         }
  95.     int num = 0;
  96.     cout << " with a minimum grade: " << endl;
  97.     for (int i = 1; i <= size; i++)
  98.         if (StudentsArr[i].AvgGrade == StudentsArr[minId].AvgGrade)
  99.             PrintStudent(StudentsArr[i], ++num);
  100.     num = 0;
  101.     cout << " with a maximum grade: " << endl;
  102.     for (int i = 1; i <= size; i++)
  103.         if (StudentsArr[i].AvgGrade == StudentsArr[maxId].AvgGrade)
  104.             PrintStudent(StudentsArr[i], ++num);
  105. }
  106.  
  107. float PrintAverageGradeOver(Student StudentsArr[], const int size, float aGrade)
  108. {
  109.     float sum = 0.0;
  110.     int num = 0;
  111.     for (int i = 1; i <= size; i++)
  112.         if (StudentsArr[i].AvgGrade > aGrade)
  113.         {
  114.             num++;
  115.             sum += StudentsArr[i].AvgGrade;
  116.         }
  117.     if (num == 0) return 0;
  118.     else return sum / num;
  119. }
  120.  
  121. int main()
  122. {
  123.     int numSudents = 5;
  124.     EnterAllStudents(Students);
  125.  
  126.     cout << "1. Information for all students:" << endl;
  127.     PrintAllStudents(Students, numSudents);
  128.  
  129.     cout << "2. All students with grade over 4.50:" << endl;
  130.     PrintStudentsOverGrade(Students, numSudents, 4.50);
  131.  
  132.     cout << "3. All students with min/max grade from 2018:" << endl;
  133.     PrintStudentsMinMaxFromYear(Students, numSudents, 2018);
  134.  
  135.     cout << "4. Average grade of students with grades over 5.00: " <<
  136.         PrintAverageGradeOver(Students, numSudents, 5.00) << endl;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment