Advertisement
Savonarolla

Untitled

Jun 12th, 2020
1,012
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.87 KB | None | 0 0
  1. /*
  2. Домашнее задание: Конструкторы. Деструкторы. Конструктор копирования.
  3. Написать класс, описывающий группу студентов. Описание студента
  4. также реализуется с помощью соответствующего класса.
  5. Студент:
  6. Поля:
  7. Имя;
  8. Год рождения.
  9. Группа:
  10. Поля:
  11. Факультет;
  12. Курс;
  13. Количество студентов;
  14. Студенты.
  15. Методы:
  16. Добавление студента в группу;
  17. Удаление студента из группы(по позиции);
  18. Вывод на экран всех студентов
  19. */
  20.  
  21. # include <iostream>
  22. # include <cstring>
  23.  
  24. using namespace std;
  25.  
  26. struct Student
  27. {
  28.     string name;
  29.     int year;
  30.     Student (int year, string name) : name (name), year(year)
  31.     {};
  32. };
  33.  
  34. struct Group
  35. {
  36.     string faculty;
  37.     string course;
  38.     int studentCount = 0;
  39.     Student students [studentCount]; // как пофиксить это, отдельно же работало
  40.  
  41.     void addStudent (Student a, Group students [], int &studentsSize)
  42.     {
  43.         incDarr(students, studentsSize);
  44.         students [studentsSize] = a;
  45.     };
  46.  
  47.     void removeStudent (Student students [], int studentsPos, int &studentsSize)
  48.     {
  49.         decrDarr(students,studentsSize,studentsPos);
  50.     }
  51.    
  52.     void printStudents (Group students [], int studentsSize)
  53.     {
  54.         for (int i =0; i < studentsSize; i++)
  55.         {
  56.             cout << students[i].students.name << " " << students[i].students.year << endl;
  57.         }
  58.     }
  59. };
  60.  
  61. int incDarr(Student *&arr, int &size )
  62. {
  63.     Student *new_arr = new Student [size + 1]; // no default constructor exists for class "Student"
  64.     // ну и как же тогда инкрементнуть этот массив
  65.     for (int i = 0; i < size; i++)
  66.     {
  67.         new_arr[i] = arr[i];
  68.     }
  69.     delete [] arr;
  70.     arr = new_arr;
  71.     return size++;
  72. }
  73.  
  74. void decrDarr(Student *&arr, int &size, int pos)
  75.     {
  76.         if (size <= 0)
  77.             return;
  78.         Student *tmp = new Student[--size]; // no default constructor exists for class "Student"
  79.     // и как декрементнуть
  80.         bool deletedFlag = false;
  81.         for (int i = 0, j = 1; i < size; ++i, ++j)
  82.             {
  83.                 if (i == pos)
  84.                     {
  85.                         deletedFlag = true;
  86.                     }
  87.                 if (!deletedFlag)
  88.                     {
  89.                 tmp[i] = arr[i];
  90.                     }
  91.                     else if (deletedFlag)
  92.                     {
  93.                         tmp[i]= arr[j];
  94.                     }
  95.             }
  96.         delete[]arr;
  97.         arr = tmp;
  98.         cout << "Deleted!" << endl;
  99.     }
  100.  
  101. int main ()
  102. {  
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement