Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- /*
- Создать базовый класс «Учащийся» и производные классы «Школьник» и
- «Студент». Создать массив объектов базового класса и заполнить этот массив
- объектами. Показать отдельно студентов и школьников.
- */
- class uch // Учащийся
- {
- public://спецификатор доступа паблик, т.е. к полям можно получить доступ с любого места программы
- int n, num;
- uch(int n, int num) //конструктор
- {
- this->n = n; //this - указатель присваивает n
- this->num = num;//аналогично, что выше
- }
- virtual void type() //виртуальна функция
- {
- cout << "Учащийся" << endl;
- }
- };
- class shkolnik : public uch //объявили класс с именем shkolnik он является производным от класса uch, т.е. uch является базовым классом
- {
- public:
- shkolnik(int x) : uch(x, 1) { };//конструктор, класса shkolnik вызывает конструктор класса uch
- void type() //переопределение нашй виртуальной функции в производном классе shkolnik
- {
- cout << "Школьник" << endl;
- }
- };
- class student : public uch ////объявили класс с именем student он является производным от класса uch, т.е. uch является базовым классом
- {
- public:
- student(int x) : uch(x, 2) { }; //конструктор, класса student вызывает конструктор класса uch
- void type() //переопределение нашей виртуальной функции объявленой в базовом классе uch
- {
- cout << "Студент" << endl;
- }
- };
- int main() {
- setlocale(0, "");
- srand(time(0));
- int n;
- cout << "Введите всего учащихся: " << endl;
- cin >> n; //ввод кол-во учащихся
- uch *a[n]; //объявляем указатель, который имеет тип базового класса
- for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
- {
- if(rand() % 100 + 1 > 50)
- a[x] = new student(x + 1);
- else
- a[x] = new shkolnik(x + 1);
- }
- for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
- {
- if(a[x]->num == 1)
- {
- cout << a[x]->n << ' ';
- a[x]->type();
- }
- }
- for(int x = 0; x < n; x++)//объявлем цикл, который будет выполняться столько раз сколько учащихся
- {
- if(a[x]->num == 2)
- {
- cout << a[x]->n << ' ';
- a[x]->type(); //вызов нашей виртуальной функции
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement