Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Futbolist.h
- #pragma once
- #include <string>
- class TFutbolist
- {
- public:
- std::string name, surname;
- int goal;
- // Конструктор по умолчанию
- TFutbolist(std::string _name = "", std::string _surname = "", int _goal = 0) : name(_name), surname(_surname), goal(_goal) {};
- // Метод отображения в текстовом режиме
- void Show()const;
- };
- //Futbolist.cpp
- #include "stdafx.h"
- #include "Futbolist.h"
- #include <iostream>
- #include <string>
- //---------------------------------------------------
- // Метод отображения в текстовом режиме
- void TFutbolist::Show()const
- {
- std::cout << "\n|" << name << " " << surname << " - " << goal << "|";
- }
- //Comanda.h
- #pragma once
- #include "Futbolist.h"
- #include <string>
- class TComanda
- {
- private:
- std::string ComandName;
- public:
- TFutbolist fut[10]; // Футболисты
- // Конструктор по умолчанию
- TComanda();
- // Конструктор инициализатор
- TComanda(TFutbolist, TFutbolist, TFutbolist);
- // Перегруженный конструктор
- TComanda(std::string n1, std::string s1, int g1, std::string n2, std::string s2, int g2, std::string n3, std::string s3, int g3, std::string n4, std::string s4, int g4);
- // Конструктор копирования
- //TComanda(const TFutbolist&);
- // Деструктор
- ~TComanda();
- std::string GetName()const { return this->ComandName; };// Получить имя объекта
- void Show() const; // Показать в текстовом режиме
- void ShowOneLines(int lines) const; // Показать в текстовом режиме 1 строку
- public:
- static int count; //количество созданных объектов
- int countFut = 0;
- };
- //Comanda.cpp
- #include "stdafx.h"
- #include <iostream>
- #include "Comanda.h"
- #include <string>
- using namespace std;
- //---------------------------------------------------
- // Конструктор по умолчанию
- TComanda::TComanda()
- {
- // увеличиваем количество команд
- count++;
- // Наименование команды
- ComandName = "Comanda[" + to_string(count) + "]";
- // вывод отладочного сообщения
- cout << "Default Constructor for " << ComandName << endl;
- }
- // Конструктор инициализатор
- TComanda::TComanda(TFutbolist _fut1, TFutbolist _fut2, TFutbolist _fut3) : fut{ _fut1, _fut2, _fut3 }
- {
- countFut += 3;
- // увеличиваем количество команд
- count++;
- // Наименование команды
- ComandName = "Comanda[" + to_string(count) + "]";
- // вывод отладочного сообщения
- cout << "Constructor initiation for " << ComandName << endl;
- }
- // Перегруженный конструктор
- TComanda::TComanda(string n1, string s1, int g1, string n2, string s2, int g2, string n3, string s3, int g3, string n4, string s4, int g4)
- {
- // увеличиваем количество команд
- count++;
- // Наименование команды
- ComandName = "Comanda[" + to_string(count) + "]";
- fut[countFut].name = n1;
- fut[countFut].surname = s1;
- fut[countFut].goal = g1;
- countFut++;
- fut[countFut].name = n2;
- fut[countFut].surname = s2;
- fut[countFut].goal = g2;
- countFut++;
- fut[countFut].name = n3;
- fut[countFut].surname = s3;
- fut[countFut].goal = g3;
- countFut++;
- fut[countFut].name = n4;
- fut[countFut].surname = s4;
- fut[countFut].goal = g4;
- countFut++;
- // вывод отладочного сообщения
- cout << "Overloaded Constructor for " << ComandName << endl;
- }
- // Конструктор копирования
- /*TComanda::TComanda(const TComanda& comanda)
- {
- cout << "Copy constructor for: " << comanda.GetName() << endl;
- ComandName = comanda.GetName() + "(copy)";
- for (int i = 0; i <= 10; i++)
- {
- fut[i] = comanda.fut[i];
- }
- }*/
- // Деструктор
- TComanda::~TComanda()
- {
- cout << "Destructor for " << ComandName << endl;
- }
- // Метод текстового показа объекта
- void TComanda::Show()const
- {
- cout << ComandName << ":";
- for (int i = 0; i < countFut; i++)
- {
- fut[i].Show();
- }
- cout << endl;
- }
- //Lab_3.cpp
- #include "stdafx.h"
- #include <iostream>
- #include "Futbolist.h"
- #include "Comanda.h"
- using namespace std;
- /*17. Метод поиска результативной команды;
- метод выводящий сведения о футболистах, по всем командам;
- метод переводящий футболиста из одной команды в другую. */
- //---------------------------------------------------
- // Инициализация глобальных переменных
- int TComanda::count = 0;
- int Menu();
- int GetNumber(int, int);
- void ExitBack();
- class Processor
- {
- public:
- void Show(TComanda*[], int);
- void Move(TComanda*[], int);
- void FindMax(TComanda*[], int);
- };
- int main()
- {
- // Определение футболистов
- TFutbolist fut1("Stecenko", "Nikita", 2); TFutbolist fut2("Anichenko", "Vladimir", 2); TFutbolist fut3("Romanuta", "Maxim", 2);
- TFutbolist fut4("Iliyn", "Denis", 3); TFutbolist fut5("Zaletskiy", "Evgeniy", 3); TFutbolist fut6("Bidnik", "Alina", 3);
- TFutbolist fut7("Zubakin", "Maxim", 1); TFutbolist fut8("Kasperunas", "Igor", 1); TFutbolist fut9("Kulishova", "Ekaterina", 1);
- // Определение команд
- TComanda comandaA(fut1, fut2, fut3);
- TComanda comandaB(fut4, fut5, fut6);
- TComanda comandaC("Lapshun", "Alexandr", 4, "Mishenko", "Mihail", 4, "Nevolnik", "Vladislav", 4, "Pavlovsky", "Ivan", 4);
- TComanda comandaD(fut7, fut8, fut9);
- // Определение массива указателей на команды
- TComanda* pComanda[] = { &comandaA,&comandaB,&comandaC,&comandaD };
- Processor processor;
- int n = sizeof(pComanda) / sizeof(pComanda[0]);
- bool done = false; // Главный цикл
- while (!done)
- {
- switch (Menu())
- {
- case 1: processor.Show(pComanda, n); break;
- case 2: processor.Move(pComanda, n); break;
- case 3: processor.FindMax(pComanda, n); break;
- case 4: cout << "The End." << endl; done = true; break;
- }
- }
- return 0;
- }
- int Menu()// Вывод меню
- {
- int option;
- cout << "\n_______ Main Menu ____________" << endl;
- cout << "1 - Output all objects" << endl;
- cout << "2 - Move" << endl;
- cout << "3 - Search for the most effective" << endl;
- cout << "4 - Exit" << endl;
- cin >> option;
- return option;
- }
- // Вывод всех Команд
- void Processor::Show(TComanda* p_comanda[], int k)
- {
- cout << "_______ Comand: _________" << endl;
- for (int i = 0; i<k; ++i)
- p_comanda[i]->Show();
- }
- // Перемещение
- void Processor::Move(TComanda* p_comanda[], int k)
- {
- int comanda1 = 0, comanda2 = 0, fut1 = 0, fut2 = 0;
- cout << "From which comand (1-" << k << "):";
- cin >> comanda1;
- cout << "Which futbolist with [" << comanda1 << "] comands (1-" << p_comanda[comanda1 - 1]->countFut << "):";
- cin >> fut1;
- cout << "Which comand (1-" << k << "):";
- cin >> comanda2;
- cout << "In which futbolist [" << comanda2 << "] of the comand (1-" << p_comanda[comanda2 - 1]->countFut << "):";
- cin >> fut2;
- comanda1--;
- comanda2--;
- fut1--;
- fut2--;
- string name1 = "", surname1 = "";
- int goal1 = 0;
- string name2 = "", surname2 = "";
- int goal2 = 0;
- name1 = p_comanda[comanda1]->fut[fut1].name;
- surname1 = p_comanda[comanda1]->fut[fut1].surname;
- goal1 = p_comanda[comanda1]->fut[fut1].goal;
- name2 = p_comanda[comanda2]->fut[fut2].name;
- surname2 = p_comanda[comanda2]->fut[fut2].name;
- goal2 = p_comanda[comanda2]->fut[fut2].goal;
- cout << "Move: '";
- cout << name1 << " " << surname1 << " ";
- cout << " to Comand[" << comanda2 + 1 << "] in fut[" << fut2 + 1 << "]" << endl;
- p_comanda[comanda2]->fut[fut2].name = name1;
- p_comanda[comanda2]->fut[fut2].surname = surname1;
- p_comanda[comanda2]->fut[fut2].goal = goal1;
- p_comanda[comanda1]->fut[fut1].name = name2;
- p_comanda[comanda1]->fut[fut1].surname = surname2;
- p_comanda[comanda1]->fut[fut1].goal = goal2;
- cout << "Moving successfully" << endl;
- Show(p_comanda, k);
- }
- // Поиск самой результативной команды
- void Processor::FindMax(TComanda* p_comanda[], int k)
- {
- int goal[10] = {0};
- for (int i = 0; i < k; i++) //проходим по командам
- {
- for (int j = 0; j < p_comanda[i]->countFut; j++) //проходим по футболистам
- {
- goal[i] += p_comanda[i]->fut[j].goal;
- }
- cout << p_comanda[i]->GetName() << " = " << goal[i] << endl;
- }
- cout << "__________ Find Max goal __________" << endl;
- int ii = 0, max = 0;
- for (int i = 0; i < 10; i++)
- {
- if (max <= goal[i])
- {
- max = goal[i];
- ii = i;
- }
- }
- cout << "Max goals = " << max << " in " << p_comanda[ii]->GetName() << ":" << endl;
- p_comanda[ii]->Show();
- }
Advertisement
Add Comment
Please, Sign In to add comment