Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. /*
  6. Создать базовый класс «Учащийся» и производные классы «Школьник» и
  7. «Студент». Создать массив объектов базового класса и заполнить этот массив
  8. объектами. Показать отдельно студентов и школьников.
  9. */
  10.  
  11. class uch // Учащийся
  12. {
  13.  
  14. public://спецификатор доступа паблик, т.е. к полям можно получить доступ с любого места программы
  15. int n, num;
  16. uch(int n, int num) //конструктор
  17. {
  18. this->n = n; //this - указатель присваивает n
  19. this->num = num;//аналогично, что выше
  20. }
  21. virtual void type() //виртуальна функция
  22. {
  23. cout << "Учащийся" << endl;
  24. }
  25. };
  26.  
  27. class shkolnik : public uch //объявили класс с именем shkolnik он является производным от класса uch, т.е. uch является базовым классом
  28. {
  29. public:
  30. shkolnik(int x) : uch(x, 1) { };//конструктор, класса shkolnik вызывает конструктор класса uch
  31. void type() //переопределение нашй виртуальной функции в производном классе shkolnik
  32. {
  33. cout << "Школьник" << endl;
  34. }
  35. };
  36.  
  37. class student : public uch ////объявили класс с именем student он является производным от класса uch, т.е. uch является базовым классом
  38. {
  39. public:
  40. student(int x) : uch(x, 2) { }; //конструктор, класса student вызывает конструктор класса uch
  41. void type() //переопределение нашей виртуальной функции объявленой в базовом классе uch
  42. {
  43. cout << "Студент" << endl;
  44. }
  45. };
  46.  
  47. int main() {
  48. setlocale(0, "");
  49. srand(time(0));
  50. int n;
  51. cout << "Введите всего учащихся: " << endl;
  52. cin >> n; //ввод кол-во учащихся
  53. uch *a[n]; //объявляем указатель, который имеет тип базового класса
  54. for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
  55. {
  56. if(rand() % 100 + 1 > 50)
  57. a[x] = new student(x + 1);
  58. else
  59. a[x] = new shkolnik(x + 1);
  60. }
  61. for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
  62. {
  63. if(a[x]->num == 1)
  64. {
  65. cout << a[x]->n << ' ';
  66. a[x]->type();
  67. }
  68. }
  69. for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
  70. {
  71. if(a[x]->num == 2)
  72. {
  73. cout << a[x]->n << ' ';
  74. a[x]->type(); //вызов нашей виртуальной функции
  75. }
  76. }
  77. system("pause");
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement