Advertisement
AntoniiaG

Claendar

Jan 29th, 2023 (edited)
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. /*
  2. Дефинирайте клас, описващ дати от календара.
  3. Дефинирайте копиращ конструктор и такъв с параметри за задаване на дата.
  4. Клас описващ студент - Име, Факултетен номер, Дата на раждане и Среден успех.
  5. Метод, който сравнява за по-малко по даден параметър обект с текущия.
  6. Демонстрирайте работата на класовете със създаване на колекция от студенти
  7. и сортирайте студентите по успех в низходящ ред
  8. */
  9.  
  10. #include <iostream>
  11. #include<string.h>
  12.  
  13. #define MAX_STUDENTS_NUMBER 10
  14.  
  15. using namespace std;
  16.  
  17. class Date{
  18. private:
  19.     int day = 0;
  20.     int month = 0;
  21.     int year = 0;
  22. public:
  23.     Date(){}
  24.     Date(int, int, int);
  25.     Date(const Date & copyObj);
  26.  
  27. };
  28. Date::Date(int d, int m , int y){
  29.     day= d;
  30.     month = m;
  31.     year = y;
  32. }
  33. Date::Date(const Date & copyObj){
  34.     day = copyObj.day;
  35.     month = copyObj.month;
  36.     year = copyObj.year;
  37. }
  38. class Student{
  39. private:
  40.     char* name = nullptr;
  41.     char* facNum = nullptr;
  42.     Date date;
  43.     double averageGrade = 0.0;
  44.  
  45. public:
  46.     Student(){}
  47.     Student(const Student & copyObj);
  48.     bool operator<(const Student & compareObj);
  49.     void setAverageGrade(double);
  50.     double getAverageGrade();
  51. };
  52. Student::Student(const Student & copyObj){
  53.     name = new char[strlen(copyObj.name) + 1];
  54.     strcpy(name, copyObj.name);
  55.  
  56.     facNum = new char[strlen(facNum) + 1];
  57.     strcpy(facNum, copyObj.facNum);
  58.  
  59.     date = copyObj.date;
  60.  
  61.     averageGrade = copyObj.averageGrade;
  62. }
  63. bool Student::operator<(const Student & compareObj){
  64.     if(averageGrade < compareObj.averageGrade){
  65.         return true;
  66.     }
  67.     else {
  68.         return false;
  69.     }
  70. }
  71. void Student::setAverageGrade(double avg){
  72.     averageGrade = avg;
  73. }
  74. double Student::getAverageGrade(){
  75.     return averageGrade;
  76. }
  77.  
  78. int main()
  79. {
  80.     Student students[MAX_STUDENTS_NUMBER];
  81.     for(int i = 0; i < 10; i++){
  82.         students[i].setAverageGrade((double)rand()/100);
  83.         cout<<students[i].getAverageGrade()<<" ";
  84.     }
  85.     cout<<endl;
  86.  
  87.     int minIndex = 0;
  88.     Student temp;
  89.  
  90.     //sorting
  91.  
  92.     for(int i = 0; i < MAX_STUDENTS_NUMBER - 1; i++){
  93.         minIndex = i;
  94.         for(int j = i+1; j< MAX_STUDENTS_NUMBER; j++){
  95.             if(students[j] < students[minIndex]){
  96.                 minIndex = j;
  97.             }
  98.         }
  99.         temp = students[minIndex];
  100.         students[minIndex] = students[i];
  101.         students[i] = temp;
  102.     }
  103.  
  104.     // printing
  105.     for(int i = 0; i < MAX_STUDENTS_NUMBER; i++){
  106.         cout<<students[i].getAverageGrade()<<" ";
  107.     }
  108.     return 0;
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement