Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2016, 19:18   #1
Максим44
 
Регистрация: 14.04.2016
Сообщений: 4
По умолчанию реализовать добавление переопределения операций или отношений

Форумчане помогите реализовать в этой программке добавление переопределения операций или отношений.
Цитата:
#include <iostream>
#include <string>
#include <vector>

namespace cf{
// класс игрок который наследуется от базового
class Player {
public:
std::string m_name; // имя игрока
size_t m_bDay; // год рождения
Player(std::string name = std::string(), size_t bDay = 0) :
m_name(name), m_bDay(bDay){} // конструктор с параметрами
Player(const Player & p){ // конструктор копирования
m_name = p.m_name;
m_bDay = p.m_bDay;
}
Player & operator=(const Player & p){ // перегруженный оператор =
m_name = p.m_name;
m_bDay = p.m_bDay;
}
virtual void print() const{ // реализация функции печати наследовано от базового класса
std::cout << m_name << " " << m_bDay << std::endl;
}
virtual ~Player(){} // деструктор
};

// класс футбольной команды наследуется от базового
class FTeam {
private:
std::vector<Player> team; // список игроков в команде
std::string liga; // название лиги
std::string name; // название команды
Player trainer; // тренер
size_t wins; // количество побед
size_t defeat; // количество поражений
public:
FTeam() : trainer(), name(std::string()), liga(std::string()), wins(0), defeat(0){} // конструктор по умолчанию
void add(Player p){ // добавление игрока в команду
team.push_back(p);
}
FTeam(Player t, std::string n, std::string l, size_t w = 0, size_t d = 0) : trainer(t),
name(n), liga(l), wins(w), defeat(d){} // конструктор с параметрами
FTeam(const FTeam & ft){ // конструктор копирования
team = ft.team;
liga = ft.liga;
name = ft.name;
trainer = ft.trainer;
wins = ft.wins;
defeat = ft.defeat;
}
virtual void print() const{ // реализация функции печати наследовано от базового класса
std::cout << "Team : " << name << std::endl;
std::cout << "Liga : " << liga << std::endl;
std::cout << "Trainer : " << trainer.m_name << std::endl;
for(size_t i = 0; i < team.size(); ++i){
team[i].print();
}
std::cout << "----------------------------------------------------" << std::endl;
}
// Сеттеры и Геттеры
void setTrainer(Player p){
trainer = p;
}
const Player & getTrainer() const{
return trainer;
}
void setLiga(std::string s){
liga = s;
}
const std::string & getLiga() const{
return liga;
}
void setNameTeam(std::string s){
name = s;
}
const std::string & getNameTeam() const{
return name;
}
void addWin(){
++wins;
}
size_t getWins() const{
return wins;
}
void resetWins(){
wins = 0;
}
void addDefeat(){
++defeat;
}
size_t getDefeat() const{
return defeat;
}
void resetDefeat(){
defeat = 0;
}
virtual ~FTeam(){}
};

// класс футбольного менеджера, наследуется от базового
class FTeamManager {
private:
std::vector<FTeam> teams; // список команд
public:
void add(FTeam ft){ // добавление команды
teams.push_back(ft);
}
void findFTeam(std::string nameTeam){
for(size_t i = 0; i < teams.size(); ++i){
if(teams[i].getNameTeam() == nameTeam)
teams[i].print();
}
}

virtual void print() const{ // реализация функции печати наследовано от базового класса
for(size_t i = 0; i < teams.size(); ++i){
teams[i].print();
}
}
virtual ~FTeamManager(){} // диструктор
};

// фабрика классов для создания объектов
class InputDataFTeam{
public:

static Player getPlayer(){ // получение объекта игрока
std::string name;
size_t bDay = 0;
std::cout << "input name palyer : "; getline(std::cin, name);
std::cout << "input birthday player : "; std::cin >> bDay;
std::cin.get();

return Player(name, bDay);
}

static FTeam getFTeam(){ // получения объекта команды
std::string nameTrainer;
std::string nameTeam;
std::string nameLiga;
size_t bDay = 0;
std::cout << "input name trainer : "; getline(std::cin, nameTrainer);
std::cout << "input name team : "; getline(std::cin, nameTeam);
std::cout << "input name liga : "; getline(std::cin, nameLiga);
std::cout << "input birthday trainer : "; std::cin >> bDay;
std::cin.get();

return FTeam(cf::Player(nameTrainer, bDay), nameTeam, nameLiga);
}
};
}

int main(){

cf::FTeamManager ftm; // объявляем объект класса менеджера

// создаем объекты команд с параметрами
cf::FTeam ft1(cf::InputDataFTeam::getFTeam()) ;
cf::FTeam ft2(cf::InputDataFTeam::getFTeam()) ;
cf::FTeam ft3(cf::InputDataFTeam::getFTeam()) ;

//добавляем игроков в команды
ft1.add(cf::InputDataFTeam::getPlay er());
ft1.add(cf::InputDataFTeam::getPlay er());
ft1.add(cf::InputDataFTeam::getPlay er());

ft2.add(cf::InputDataFTeam::getPlay er());
ft2.add(cf::InputDataFTeam::getPlay er());
ft2.add(cf::InputDataFTeam::getPlay er());

ft3.add(cf::InputDataFTeam::getPlay er());
ft3.add(cf::InputDataFTeam::getPlay er());
ft3.add(cf::InputDataFTeam::getPlay er());

//добавляем команды менеджеру
ftm.add(ft1);
ftm.add(ft2);
ftm.add(ft3);

//поиск определенной команды по названию и вывод данных о ней
std::string findFteam;
std::cout << "Input team name for find : "; getline(std::cin, findFteam);
ftm.findFTeam(findFteam);

// выводим данные всех команд, которыми "управляет" менеджер
std::cout << std::endl;
std::cout << std::endl;
std::cout << std::endl;
ftm.print();

return 0;
}
Работа операций должна отображаться на мониторе
Максим44 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен совет как реализовать изменение+добавление lutdan БД в Delphi 2 15.10.2012 15:27
Реализовать в виде модуля набор набор подпрограмм для следующих операций со строками : 1) Процедура подсчёта кол-ва букв к в пер Richik123 Паскаль, Turbo Pascal, PascalABC.NET 12 23.09.2012 12:24
Реализовать в виде модуля набор подпрограмм для выполнения следующих операций с массивом размерности nxm: Лыжник Помощь студентам 1 13.09.2012 14:46
Реализовать в виде модуля набор подпрогамм для выполнения следующих операций квадратными матрицами Nomid Общие вопросы C/C++ 3 11.12.2010 15:48