Advertisement
enkov

Задача със структура (с функции)

Nov 7th, 2018
534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.74 KB | None | 0 0
  1. /*  С ФУНКЦИИ
  2. В един университет се прави малка програма за работа със студенти.
  3. Всеки студент се описва с име, факултетен номер, курс (число от 1 до 4)
  4. и (средно-аритметичен) успех.
  5. Изведете информация за:
  6. 1. всички студенти;
  7. 2. студенти, които имат успех под 3.50 от 2-ри курс;
  8. 3. студентите с максимален и минимален успех от 3-ти курс;
  9. 4. за всеки курс средните успехи.
  10. */
  11.  
  12. // Вариант с функции
  13.  
  14. #include "stdafx.h"
  15. #include <iostream>
  16. #include <string>
  17. using namespace std;
  18.  
  19. // Със структура е по-удобно и по-лесно
  20. // глобална дефиниция
  21. struct Student {
  22.     string Name;
  23.     string FacNo;
  24.     int Course;
  25.     float Uspeh;
  26. };
  27.  
  28. void EnterStudents(Student Students[], const int size)
  29. {
  30.     for (int i = 0; i < size; i++)
  31.     {
  32.         cout << "Enter information for student " << i << endl;
  33.         cout << " Name: ";
  34.         cin.get();  // skip the buffer
  35.         getline(cin, Students[i].Name);
  36.         cout << " Fac number: ";
  37.         getline(cin, Students[i].FacNo);
  38.         cout << " Course: ";
  39.         cin >> Students[i].Course;
  40.         cout << " Uspeh: ";
  41.         cin >> Students[i].Uspeh;
  42.     }
  43. }
  44.  
  45. void PrintStudent(Student aStudent, int NumberBy)
  46. {
  47.     cout << "Student " << NumberBy << ":"
  48.         << " Name: " << aStudent.Name
  49.         << " Fac number: " << aStudent.FacNo
  50.         << " Course: " << aStudent.Course
  51.         << " Uspeh: " << aStudent.Uspeh << endl;
  52. }
  53.  
  54. void PrintAllStudents(Student Students[], const int size)
  55. {
  56.     cout << "1. Information for all students: " << endl;
  57.     for (int i = 0; i < size; i++)
  58.     {
  59.         PrintStudent(Students[i], i);
  60.     }
  61. }
  62.  
  63. float MinimalGradeFromCourse(Student Students[], const int size, int aCourse)
  64. {
  65.     float minUspeh = 0;
  66.     for (int i = 0; i < size; i++)
  67.     {
  68.         if (Students[i].Course == aCourse)
  69.         {
  70.             // ако е 1-вия от този курс - запомняме
  71.             if (minUspeh == 0)
  72.                 minUspeh = Students[i].Uspeh;
  73.             // проверяваме
  74.             if (Students[i].Uspeh < minUspeh)
  75.                 minUspeh = Students[i].Uspeh;
  76.         }
  77.     }
  78.     return minUspeh;
  79. }
  80.  
  81.  
  82. float MaximallGradeFromCourse(Student Students[], const int size, int aCourse)
  83. {
  84.     float maxUspeh = 0;
  85.     for (int i = 0; i < size; i++)
  86.     {
  87.         if (Students[i].Course == aCourse)
  88.         {
  89.             // ако е 1-вия от този курс - запомняме
  90.             if (maxUspeh == 0)
  91.                 maxUspeh = Students[i].Uspeh;
  92.             // проверяваме
  93.             if (Students[i].Uspeh > maxUspeh)
  94.                 maxUspeh = Students[i].Uspeh;
  95.         }
  96.     }
  97.     return maxUspeh;
  98. }
  99.  
  100. float AverageGradeFromCourse(Student Students[], const int size, int aCourse)
  101. {
  102.     float sum = 0;
  103.     int count = 0;
  104.     for (int i = 0; i < size; i++)
  105.         if (Students[i].Course == aCourse)
  106.         {
  107.             count++;
  108.             sum += Students[i].Uspeh;
  109.         }
  110.     if (count == 0)
  111.         return 0;
  112.     else
  113.         return sum / count;
  114. }
  115.  
  116. void PrintAverageGradeFromCourse(float Average, int aCourse)
  117. {
  118.     if (Average > 0)
  119.         cout << " Course " << aCourse << ": " << Average << endl;
  120.     else
  121.         cout << " Course " << aCourse << ": has no students " << endl;
  122. }
  123.  
  124. int main()
  125. {
  126.     const int n = 50;
  127.  
  128.     Student Students[n];
  129.  
  130.     int x;  // работим с х студента
  131.  
  132.     do {
  133.         cout << "Broi studenti (5..50): ";
  134.         cin >> x;
  135.     } while (x < 5 || x > 50); // приемаме само между 5 и 50
  136.    
  137.  
  138.     EnterStudents(Students, x);
  139.  
  140.     // 1. всички студенти
  141.     PrintAllStudents(Students, x);
  142.  
  143.     // 2. студенти, които имат успех под 3.50 от 2 - ри курс;
  144.     cout << "2. Students with grade less than 3.50 from 2-nd course: " << endl;
  145.     for (int i = 0; i < x; i++)
  146.     {
  147.         if (Students[i].Uspeh < 3.50 && Students[i].Course == 2)
  148.             PrintStudent(Students[i], i);
  149.     }
  150.  
  151.     // 3. студентите с максимален и минимален успех от 3 - ти курс;
  152.     cout << "3.1. Students with minimal grade from 3-rd course: " << endl;
  153.     float max3, min3;
  154.     min3 = MinimalGradeFromCourse(Students, x, 3);
  155.     max3 = MaximallGradeFromCourse(Students, x, 3);
  156.     for (int i = 0; i < x; i++)
  157.     {
  158.         if (Students[i].Uspeh == min3 && Students[i].Course == 3)
  159.             PrintStudent(Students[i], i);
  160.     }
  161.     cout << "3.2. Students with maximal grade from 3-rd course: " << endl;
  162.     for (int i = 0; i < x; i++)
  163.     {
  164.         if (Students[i].Uspeh == max3 && Students[i].Course == 3)
  165.             PrintStudent(Students[i], i);
  166.     }
  167.  
  168.     // 4. за всеки курс средните успехи
  169.     cout << "4. Average grades for course: " << endl;
  170.     for (int course = 1; course <= 4; course++)
  171.         PrintAverageGradeFromCourse(AverageGradeFromCourse(Students, x, course), course);
  172.  
  173.     return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement