|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2021, 15:26 | #1 |
Регистрация: 08.10.2021
Сообщений: 5
|
Классы C++
C++. Есть код: выводит список людей (фамилия возраст и т.д), из них же нужно выбрать избирателей по заданной фамилии (вводит пользователь). То есть из списка выбрать одновременно тех, кому 18 и больше и чтоб фамилия человека совпадала с той, какую я ввела. Сначала сделала так, что выводился список избирателей, потом задавала фамилию для поиска, и уже из избирателей он находил нужную фамилию. Теперь надо сделать одновременно, попытка есть, но выдает ошибку в последнем действии, где if, не определяет Man в условии (выделила красным). Как исправить?
#include <iostream> #include <string> #include <Windows.h> using namespace std; class TMan { private: 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; }; void SetMan(TMan& Man) { cout << "Введите имя: "; cin >> Man.name; cout << "Введите Фамилию человека: "; cin >> Man.family; cout << "Введите отчество: "; cin >> Man.otchestvo; cout << "Введите возвраст: "; cin >> Man.age; cout << "Введите адрес: "; cin.ignore(); getline(cin, Man.address); cout << "\n"; } void GetMan(const TMan& Man) { cout << "Фамилия: " << Man.family; cout << "\nИмя: " << Man.name; cout << "\nОтчество: " << Man.otchestvo; cout << "\nВозраст: " << Man.age; cout << "\nАдрес: " << Man.address << endl << endl; } void sravnFamily(const TMan& Man, string Family) { if ((Man.family == Family)); GetMan(Man); } void copy(TMan& Man1, TMan& Man2); }; int main() { setlocale(LC_ALL, "ru"); SetConsoleCP(1251); SetConsoleOutputCP(1251); int N = 0; string Family; cout << "Введите количество человек: "; cin >> N; TMan* obj = new TMan[N]; cout << "\n________________________________ ____\n"; TMan objTMan; for (int i = 0; i < N; i++) { objTMan.SetMan(obj[i]); } cout << "\n________________________________ ____\n"; cout << "Объект созданный конструктором с параметрами:\n"; TMan Man1("Иванов", "Иван", "Иванович", 33, "г. Москва, ул Мира, д 375, кв 5"); objTMan.GetMan(Man1); cout << "\n"; cout << "Объект созданный конструктором копирования (скопирован первый объект):\n"; TMan obj1(obj[0]); objTMan.GetMan(obj1); cout << "\n________________________________ ____\n"; cout << "Список людей:\n\n"; for (int i = 0; i < N; i++) { objTMan.GetMan(obj[i]); } cout << "\n________________________________ ____\n"; cout << "Введите фамилию для сравнения: "; cin >> Family; cout << "\n________________________________ ____\n"; cout << "Избиратели: \n\n"; for (int i = 0; i < N; i++) { if ((Man.age >= 18)); objTMan.sravnFamily(obj[i], Family); } system("Pause"); return 0; } |
09.12.2021, 15:39 | #2 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
1. Для ифа одних скобок хватает.
2. Если вы сразу ставите после ифа ;, то при условии ничего не выполняет, ибо тело пусто, а операторы ниже выполняются всегда. 3. SetMan и GetMan внутри TMan выглядит странновато. 4. Для конструкторов используйте список инициализации. 5. В вашем коде Код:
|
09.12.2021, 16:36 | #3 |
Регистрация: 08.10.2021
Сообщений: 5
|
Я поменяла одну из функций, одну убрала, и в конце получилось по-другому, то что поменяла желтое, но все равно выдает ошибку (строки выделила красным):
TMan::sravnAge: функция не принимает 1 аргументов слишком мало аргументов в вызове функции #include <iostream> #include <string> #include <Windows.h> using namespace std; class TMan { private: 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; }; void SetMan(TMan& Man) { cout << "Введите имя: "; cin >> Man.name; cout << "Введите Фамилию человека: "; cin >> Man.family; cout << "Введите отчество: "; cin >> Man.otchestvo; cout << "Введите возвраст: "; cin >> Man.age; cout << "Введите адрес: "; cin.ignore(); getline(cin, Man.address); cout << "\n"; } void GetMan(const TMan& Man) { cout << "Фамилия: " << Man.family; cout << "\nИмя: " << Man.name; cout << "\nОтчество: " << Man.otchestvo; cout << "\nВозраст: " << Man.age; cout << "\nАдрес: " << Man.address << endl << endl; } void sravnAge(const TMan& Man, string Family, string Age) { if ((Man.age >= 18)&&(Man.family == Family)) GetMan(Man); } void copy(TMan& Man1, TMan& Man2); }; int main() { setlocale(LC_ALL, "ru"); SetConsoleCP(1251); SetConsoleOutputCP(1251); int N = 0; string Family; cout << "Введите количество человек: "; cin >> N; TMan* obj = new TMan[N]; cout << "\n________________________________ ____\n"; TMan objTMan; for (int i = 0; i < N; i++) { objTMan.SetMan(obj[i]); } cout << "\n________________________________ ____\n"; cout << "Объект созданный конструктором с параметрами:\n"; TMan Man1("Иванов", "Иван", "Иванович", 33, "г. Москва, ул Мира, д 375, кв 5"); objTMan.GetMan(Man1); cout << "\n"; cout << "Объект созданный конструктором копирования (скопирован первый объект):\n"; TMan obj1(obj[0]); objTMan.GetMan(obj1); cout << "\n________________________________ ____\n"; cout << "Список людей:\n\n"; for (int i = 0; i < N; i++) { objTMan.GetMan(obj[i]); } cout << "\n________________________________ ____\n"; cout << "Введите фамилию для сравнения: "; cin >> Family; cout << "\n________________________________ ____\n"; cout << "Избиратели: \n\n"; for (int i = 0; i < N; i++) { objTMan.sravnAge(obj[i]); } system("Pause"); return 0; } |
09.12.2021, 16:41 | #4 |
Форумчанин
Регистрация: 02.06.2021
Сообщений: 515
|
Вы вызываете:
Код:
Код:
|
09.12.2021, 18:01 | #5 |
Регистрация: 08.10.2021
Сообщений: 5
|
Да, точно, простите. Спасибо)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы в С++ | Lily-R | Помощь студентам | 1 | 25.09.2010 22:59 |
C++ и классы | xnise | Помощь студентам | 0 | 13.06.2010 18:31 |
классы в с++ | whim | Общие вопросы C/C++ | 2 | 09.06.2010 22:34 |
[C++] Классы | AquaticSoul | Общие вопросы C/C++ | 10 | 09.06.2010 17:57 |