|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.12.2021, 19:29 | #1 |
Регистрация: 08.10.2021
Сообщений: 5
|
Программирование C++. Наследование
Был код программы (классы, структура): вводился список людей и данные о них. Из этого списка функцией выбирались избиратели старше 18 с заданной пользователем фамилией. После был произведен перегруз ввода/вывода и операций. Появилась задача: создать производный класс, который должен характеризовать человека как студента. Введите такие элементы-данные, как название учебного заведения, номер студенческой группы, средний балл, предусмотрите возможность инициализации этих данных. Добавьте метод класса для поиска всех студентов-отличников в определенной группе.
До этого сделала все, но на наследовании застопорилась. Попыталась #include <iostream> #include <string> #include <Windows.h> using namespace std; class TMan { public: string family; string name; string otchestvo; int age; string address; public: TMan() { family = ""; name = ""; otchestvo = ""; age = 0; address = ""; }; TMan(string Family, string Name, string Otchestvo, int Age, string Address) { family = Family; name = Name; otchestvo = Otchestvo; age = Age; address = Address; }; TMan(TMan& Man) { family = Man.family; name = Man.name; otchestvo = Man.otchestvo; age = Man.age; address = Man.address; }; friend bool operator== (TMan const& man, string Family); friend bool operator>= (TMan const& Man, int Age); friend ostream& operator<<(ostream& os, const TMan& Man); friend istream& operator>>(istream& is, TMan& Man); }; //перегрузы ostream& operator<<(ostream& os, const TMan& Man) { os << "Фамилия: " << Man.family; os << "\nИмя: " << Man.name; os << "\nОтчество: " << Man.otchestvo; os << "\nВозраст: " << Man.age; os << "\nАдрес: " << Man.address << endl << endl; return os; } istream& operator>>(istream& is, TMan& Man) { cout << "Введите имя: "; is >> Man.name; cout << "Введите Фамилию человека: "; is >> Man.family; cout << "Введите отчество: "; is >> Man.otchestvo; cout << "Введите возвраст: "; is >> Man.age; cout << "Введите адрес: "; cout << Man.address; is.ignore(); getline(is, Man.address); cout << "\n"; return is; } bool operator== (TMan const& man, string Family) { return man.family == Family; } bool operator>= (TMan const& Man, int Age) { return Man.age >= Age; } //--------------------------------------------- class Students : public TMan { public: string name_institution; string group_number; int average_score; public: Students() { name_institution = ""; group_number = ""; average_score = 0; }; Students(string Name_institution, string Group_number, int Average_score) { name_institution = Name_institution; group_number = Group_number; average_score = Average_score; }; Students(Students& student) { name_institution = student.name_institution; group_number = student.group_number; average_score = student.average_score; }; void SetStudent(Students& student) { cout << "Введите название учреждения: "; cin >> student.name_institution; cout << "Введите номер студенческой группы: "; cin >> student.group_number; cout << "Введите средний балл: "; cin >> student.average_score; cout << "\n"; } void GetStudent(Students& student) { cout << "Название учреждения: " << student.name_institution; cout << "\nНомер студенческой группы: " << student.group_number; cout << "\nСредний балл: " << student.average_score << endl << endl; } void Excellently(Students&student, string group_number, string average_score, string Group_number) { if ((student.average_score==5) && (student.group_number == Group_number)) GetStudent(student); } }; int main() { setlocale(LC_ALL, "ru"); SetConsoleCP(1251); SetConsoleOutputCP(1251); int N = 0; string Family; string Age; string group_number; string average_score; string Group_number; cout << "Введите количество человек: "; cin >> N; TMan* obj = new TMan[N]; Students* elm = new Students[N]; cout << "\n________________________________ ____\n"; TMan objTMan; Students objStudents; for (int i = 0; i < N; i++) { //Здесь используется перегруз ввода cin >> obj[i]; } cout << "\n________________________________ ____\n"; cout << "Объект созданный конструктором с параметрами:\n"; TMan Man1("Иванов", "Иван", "Иванович", 33, "г. Москва, ул Мира, д 375, кв 5"); //Здесь используется перегруз вывода cout << Man1; cout << "\n"; cout << "Объект созданный конструктором копирования (скопирован первый объект):\n"; TMan obj1(obj[0]); //Здесь используется перегруз вывода cout << obj1; cout << "\n________________________________ ____\n"; cout << "Список людей:\n\n"; for (int i = 0; i < N; i++) { //Здесь используется перегруз вывода cout << obj[i]; } cout << "\n________________________________ ____\n"; cout << "Введите фамилию для сравнения: "; cin >> Family; cout << "\n________________________________ ____\n"; cout << "Избиратели: \n\n"; for (int i = 0; i < N; i++) { if ((obj[i] == Family) && (obj[i] >= 18)) cout << obj[i]; } cout << "Введите номер студенческой группы: "; cin >> Group_number; cout << "\n________________________________ ____\n"; cout << "Студенты-отличники: \n\n"; for (int i = 0; i < N; i++) { objStudents.Excellently(elm[i], group_number, average_score, Group_number); } system("Pause"); return 0; } Создала еще класс Students и передала параметры из базового (TMan). Добавила нужные поля и функцию. Но добавленный класс пропускается. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объектно-Ориентированное Программирование Наследование и композиция | cyberLubich | C# (си шарп) | 1 | 21.11.2021 19:56 |
Программирование или web-программирование? | Дмитрий Батогов | Помощь студентам | 3 | 23.06.2011 14:14 |
наследование c++ | Nata-Tata | Помощь студентам | 1 | 06.04.2011 00:09 |
Наследование | notHaker | Общие вопросы Delphi | 5 | 24.05.2010 18:55 |
Наследование на C++ | dziga1989 | Помощь студентам | 5 | 22.10.2009 11:25 |