// vitrpers.cpp // виртуальные функции и класс person #include using namespace std; /////////////////////////////////////////////// class person //класс person { protected: char name[40]; public: void getName() { cout << " Введите имя: "; cin >> name; } void putName() { cout << " Имя: " << name << endl; } virtual void getData() = 0; //чистые virtual bool isOutstanding() =0; //виртуальные //функции }; //////////////////////////////////////////////// class student : public person //класс student { private: float gpa; //средний балл public: void getData() //запросить данные об ученике у { //пользователя person::getName(); cout << " Средний балл ученика: "; cin >> gpa; } bool isOutstanding() { return (gpa > 3.5) ? true : false; } }; //////////////////////////////////////////////// class professor : public person //класс professor { private: int numPubs; //число публикаций public: void getData() //запросить данные о педагоге у { //пользователя person::getName(); cout << " Число публикаций: "; cin >> gpa; } bool isOutstanding() { return (gpa > 100) ? true : false; } }; //////////////////////////////////////////////// int main() { person* persPTR[100]; //массив указателей на person int n = 0; //число людей, внесенных в список char choice; do { cout << " Учащийся (s) или педагог (p): "; cin >> choice; if(choice=='s' ) //Занести нового ученика persPtr[n] = new student; // в массив else //Занести нового persPtr[n] = new professor; //педагога в массив persPtr[n++]->getData(); //Запрос данных о персоне cout << " Ввести еще персону (y/n)? "; //создать еще //персону cin >> choice; } while( choice=='y' ); //цикл, пока ответ 'y' for(int j=0; jputName(); //Вывести все имена, if( persPtr[j]->isOutstanding() ) //сообщать о cout << " Это выдающийся человек!\n"; //выдающихся } return 0; } //Конец main()