nvnnaidenov

Zad75

Oct 28th, 2021
800
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. const int NUM = 5;
  8.  
  9. struct student
  10. {
  11.     int factnom;
  12.     char name[40];
  13.     double marks[NUM];
  14. };
  15.  
  16. void read_student(student&);
  17. void print_student(const student&);
  18. void sort(int, student[]);
  19. double average(double*);
  20.  
  21. int main()
  22. {
  23.     int n;
  24.     student st[30];
  25.  
  26.     cout << "Broi studenti = ";
  27.     cin >> n;
  28.     if(!cin || n < 1 || n > 30)
  29.     {
  30.         cout << "Error, bad input!" << endl;
  31.         return 1;
  32.     }
  33.  
  34.     for(int i = 0; i <= n - 1; i++)
  35.     {
  36.         read_student(st[i]);
  37.     }
  38.  
  39.     cout << "Studenti: " << endl << endl;
  40.  
  41.     for(int i = 0; i <= n - 1; i++)
  42.     {
  43.         print_student(st[i]);
  44.     }
  45.  
  46.     cout << "Podredeni po uspeh:" << endl << endl;
  47.  
  48.     sort(n, st);
  49.  
  50.     for(int i = 0; i <= n - 1; i++)
  51.     {
  52.         print_student(st[i]);
  53.         cout << setw(7) << average(st[i].marks) << endl;
  54.     }
  55.  
  56.     return 0;
  57. }
  58.  
  59. void read_student(student& stud)
  60. {
  61.     char p[100];
  62.     cout << "Fakulteten nomer na student = ";
  63.     cin >> stud.factnom;
  64.     cin.getline(p, 100);
  65.     cout << "Imena na student = ";
  66.     cin.getline(stud.name, 40);
  67.     for(int i = 0; i <= NUM - 1; i++)
  68.     {
  69.         cout << i << "-th. mark = ";
  70.         cin >> stud.marks[i];
  71.     }
  72. }
  73.  
  74. void print_student(const student& stud)
  75. {
  76.     cout << setw(3) << "Falulteten nomer na studenta: " << stud.factnom << endl;
  77.     cout << setw(3) << "Imena na studenta: " << stud.name << endl;
  78.     cout << setw(3) << "Ocenki na studenta :" << endl;
  79.     for(int i = 0; i <= NUM - 1; i++)
  80.     {
  81.         cout << setw(3) << stud.marks[i] << endl;
  82.     }
  83. }
  84.  
  85. void sort(int n, student stud[])
  86. {
  87.     for(int i = 0; i <= n - 2; i++)
  88.     {
  89.         int k = i;
  90.         double max = average(stud[i].marks);
  91.         for(int j = i + 1; j <= n - 1; j++)
  92.         {
  93.             if(average(stud[j].marks) > max)
  94.             {
  95.                 max = average(stud[j].marks);
  96.                 k = j;
  97.             }
  98.         }
  99.         student x = stud[i];
  100.         stud[i] = stud[k];
  101.         stud[k] = x;
  102.     }
  103. }
  104.  
  105. double average(double *a)
  106. {
  107.     double s = 0;
  108.  
  109.     for(int i = 0; i <= NUM - 1; i++)
  110.     {
  111.         s += a[i];
  112.     }
  113.  
  114.     return s / NUM;
  115. }
RAW Paste Data