From 74fbd674d50f723938fcb2924e65a172f35610af Mon Sep 17 00:00:00 2001
From: bukits <39166226+bukits@users.noreply.github.com>
Date: Fri, 11 May 2018 13:18:25 +0200
Subject: [PATCH] Add files via upload

---
 csapat.cpp     |  65 +++++++++++
 csapat.h       |  84 +++++++++++++
 csarnok.h      |  13 +++
 egyesulet.h    | 144 +++++++++++++++++++++++
 ember.h        |  15 +++
 gtest_lite.h   | 218 ++++++++++++++++++++++++++++++++++
 idopont.cpp    |  20 ++++
 idopont.h      |  36 ++++++
 jatekos.cpp    |  14 +++
 jatekos.h      |  28 +++++
 kezilabda.cpp  |  27 +++++
 kezilabda.h    |  28 +++++
 kosarlabda.cpp |  27 +++++
 kosarlabda.h   |  24 ++++
 labdarugas.cpp |  28 +++++
 labdarugas.h   |  27 +++++
 mafc.txt       |   4 +
 main.cpp       | 311 +++++++++++++++++++++++++++++++++++++++++++++++++
 palya.cpp      |  52 +++++++++
 palya.h        |  42 +++++++
 20 files changed, 1207 insertions(+)
 create mode 100644 csapat.cpp
 create mode 100644 csapat.h
 create mode 100644 csarnok.h
 create mode 100644 egyesulet.h
 create mode 100644 ember.h
 create mode 100644 gtest_lite.h
 create mode 100644 idopont.cpp
 create mode 100644 idopont.h
 create mode 100644 jatekos.cpp
 create mode 100644 jatekos.h
 create mode 100644 kezilabda.cpp
 create mode 100644 kezilabda.h
 create mode 100644 kosarlabda.cpp
 create mode 100644 kosarlabda.h
 create mode 100644 labdarugas.cpp
 create mode 100644 labdarugas.h
 create mode 100644 mafc.txt
 create mode 100644 main.cpp
 create mode 100644 palya.cpp
 create mode 100644 palya.h

diff --git a/csapat.cpp b/csapat.cpp
new file mode 100644
index 0000000..7361eab
--- /dev/null
+++ b/csapat.cpp
@@ -0,0 +1,65 @@
+#include <iostream>
+#include <fstream>
+
+#include "csapat.h"
+#include "jatekos.h"
+
+void csapat::kiir(std::ostream& os) {
+    os << "Nev: " << nev << "   Letszam: " << letszam <<"   Edzes idopont kezdete: " << kezdet <<
+          "   Edzes idopont vege: " << veg << "   Palya nev: " << palya_nev;
+}
+
+void csapat::fajlba_kiir(std::ofstream& fout) {
+    fout << csapat_azonosito << " " << nev << " " << letszam << " " << kezdet << " " << veg << " " << palya_nev << " ";
+}
+
+void csapat::uressor_fajlba(std::ofstream& fout) {
+    fout << "\n";
+}
+
+void csapat::csere(jatekos *j1, jatekos *j2) {
+    delete j1;
+    j1 = j2;
+}
+
+int csapat::minimum_kereses() {
+    int i = 0;
+    int minindex = i;
+    for(int j = i+1; j < letszam; ++j) {
+        if(jatekosok[j]->get_experience() < jatekosok[minindex]->get_experience())
+            minindex = j;
+    }
+    return minindex;
+}
+
+jatekos* csapat::jatekos_vizsgal(jatekos *uj) {
+    int x = minimum_kereses();
+    int xp = jatekosok[x]->get_experience();
+    if(xp < uj->get_experience()) {
+        csere(jatekosok[x], uj);
+    }
+    return uj;
+}
+
+void csapat::jatekos_hozzaad(jatekos *uj) {
+    if(jatekos_meret < kapacitas) {
+        if(jatekos_meret > letszam)
+            uj = jatekos_vizsgal(uj);
+        else
+            jatekosok[jatekos_meret++] = uj;
+    }
+    else
+        {
+        throw "HIBA";
+        }
+}
+
+void csapat::jatekos_listaz(std::ostream& os) {
+    for(int i = 0; i < letszam; ++i)
+        jatekosok[i]->kiir(os);
+}
+
+void csapat::jatekos_listaz_fajlba(std::ofstream& fout) {
+    for(int i = 0; i < letszam; ++i)
+        jatekosok[i]->fajlba_ir(fout);
+}
diff --git a/csapat.h b/csapat.h
new file mode 100644
index 0000000..419978a
--- /dev/null
+++ b/csapat.h
@@ -0,0 +1,84 @@
+#ifndef CSAPAT_H_INCLUDED
+#define CSAPAT_H_INCLUDED
+
+#include <string>
+#include <fstream>
+#include <sstream>
+
+#include "idopont.h"
+#include "jatekos.h"
+
+class csapat {
+    const static int kapacitas = 50;
+    std::string nev;
+    int letszam;
+    Idopont kezdet;
+    Idopont veg;
+    std::string palya_nev;
+    jatekos *jatekosok[kapacitas];
+    int jatekos_meret;
+    int csapat_azonosito;
+public:
+    csapat(std::string n, int lsz, Idopont k, Idopont v, std::string pn) :nev(n), letszam(lsz), kezdet(k), veg(v), palya_nev(pn), jatekos_meret(0) {}
+
+    ///letszam lekerdezo fuggveny
+    int getLetszam() const {return letszam;}
+
+    ///csapat_azonosito beallitasa
+    int getAzonosito() const {return csapat_azonosito;}
+
+    Idopont getIdopontKezdet() const {return kezdet;}
+
+    Idopont getIdopontVeg() const {return veg;}
+
+    jatekos& operator[](int x) {return *(jatekosok[x]);}
+
+    std::string getPalya() const {return palya_nev;}
+
+    void setAzonosito(int id) {csapat_azonosito = id;}
+    void setNev(std::string n) {nev = n;}
+    void setLetszam(int lsz) {letszam = lsz;}
+    void setIdopontKezdet(Idopont k) {kezdet = k;}
+    void setIdopontVeg(Idopont v) {veg = v;}
+    void setPalya(std::string p) {palya_nev = p;}
+
+    ///csapatnev lekerdezo fuggveny
+    std::string getNev() const {return nev;}
+
+    ///csapat adatainak kiirasa
+    ///virtualis, hiszen minden mas tipusu csapatnal mast kell kiirnia
+    virtual void kiir(std::ostream& os);
+
+    ///ugyanaz mint a simanal, csak itt fajlba ir
+    virtual void fajlba_kiir(std::ofstream& fout);
+    void uressor_fajlba(std::ofstream& fout);
+
+    ///eldonti hogy a megadott feltetelek alapjan tud e edzeni a csapat
+    ///ezek alapjan utasit az esetleges valtoztatasra
+    virtual bool edzes_e() = 0;
+    virtual void edzes_kiir(std::ostream& os) = 0;
+
+    ///ezek a fuggvenyek felelnek a jatekos hozzaadasanal az esetleges csereert
+    int minimum_kereses();
+    void csere(jatekos *j1, jatekos *j2);
+    jatekos* jatekos_vizsgal(jatekos *uj);
+
+    ///jatekos hozzaadas a megfelelo csapathoz
+    void jatekos_hozzaad(jatekos *uj);
+
+    ///jatekos adatainak kilistazasa standard outpura es fajlba
+    void jatekos_listaz(std::ostream& os);
+    void jatekos_listaz_fajlba(std::ofstream& fout);
+
+    void jatekosok_torol() {
+        for(int i = 0; i < jatekos_meret; ++i)
+            delete jatekosok[i];
+    }
+
+    void jatekos_torol();
+
+    virtual ~csapat() {
+        jatekosok_torol();
+    }
+};
+#endif // CSAPAT_H_INCLUDED
diff --git a/csarnok.h b/csarnok.h
new file mode 100644
index 0000000..6179fe3
--- /dev/null
+++ b/csarnok.h
@@ -0,0 +1,13 @@
+#ifndef CSARNOK_H_INCLUDED
+#define CSARNOK_H_INCLUDED
+
+#include <string>
+
+#include "palya.h"
+
+struct csarnok :public palya {
+    csarnok(std::string palya_nev) :palya(palya_nev) {}
+    ~csarnok() {}
+};
+
+#endif // CSARNOK_H_INCLUDED
diff --git a/egyesulet.h b/egyesulet.h
new file mode 100644
index 0000000..409ff53
--- /dev/null
+++ b/egyesulet.h
@@ -0,0 +1,144 @@
+#ifndef EGYESULET_H_INCLUDED
+#define EGYESULET_H_INCLUDED
+
+#include <string>
+
+#include "csapat.h"
+#include "palya.h"
+
+//T tipus tarolokat hozok letre az egyesuletben
+template<typename T, int kapacitas = 10>
+class egyesulet {
+    T *tarolo[kapacitas];
+    int meret;
+public:
+    egyesulet() : meret(0) {}
+
+    int size() const {return meret;}
+
+    bool egyenolo(T *a, T *b) {
+        return a->getNev() == b->getNev();
+    }
+
+    bool isElement(T *e) {
+        for(int i = 0; i < meret; ++i)
+            if(egyenolo(e, tarolo[i]))
+                return true;
+        return false;
+    }
+
+    void getIsElement(T *e, std::ostream& os) {
+        if(isElement(e))
+            os << "igen" << std::endl;
+        else
+            os << "nem" << std::endl;
+    }
+
+    void hozzaad(T *uj) {
+        //van mar ilyen nevu elem
+        if(isElement(uj))
+            delete uj;
+        else if(meret < kapacitas)
+            tarolo[meret++] = uj;
+        else
+            throw "HIBA";
+    }
+
+    void tipus_kiir(std::ostream& os) {
+        for(int i = 0; i < meret; ++i)
+            tarolo[i]->palyanev_kiir(os);
+    }
+
+    void listaz(std::ostream& os) {
+        for(int i = 0; i < meret; ++i)
+            tarolo[i]->kiir(os);
+    }
+
+    void edzesek(std::ostream& os) {
+        for(int i = 0; i < meret; ++i)
+            tarolo[i]->edzes_kiir(os);
+    }
+
+    int egyesulet_letszam() {
+        int letszam = 0;
+        for(int i = 0; i < meret; ++i)
+            letszam += tarolo[i]->getLetszam();
+        return letszam;
+    }
+
+    void letszam_kiir(std::ostream& os) {
+        int x = egyesulet_letszam();
+        os << "Osszletszam: " << x << std::endl;
+    }
+
+    T& operator[](std::string nev) {
+        for(int i = 0; i < meret; ++i)
+            if(tarolo[i]->getNev() == nev)
+                return *(tarolo[i]);
+            throw "Hiba";
+    }
+
+    T& operator[](int x) {return *(tarolo[x]);}
+
+    void csapatok_kiir_fajlba(std::ofstream& fout) {
+        for(int i = 0; i < meret; ++i) {
+            tarolo[i]->fajlba_kiir(fout);
+            tarolo[i]->jatekos_listaz_fajlba(fout);
+            if(i != meret-1)
+                tarolo[i]->uressor_fajlba(fout);
+        }
+    }
+
+    void csapat_torol(std::string cs_nev) {
+        T **temp = new T*[kapacitas];
+        int ujdb = 0;
+        for(int i = 0; i < meret; ++i) {
+            if(tarolo[i]->getNev() != cs_nev)
+                temp[ujdb++] = tarolo[i];
+            else
+                delete tarolo[i];
+        }
+        *tarolo = *temp;
+        meret = ujdb;
+    }
+
+    void csapatmenu_kezel(std::ostream& os, std::istream& is, std::string& csapat_nev, int& letszam, Idopont& kezdet, Idopont& veg, std::string& palya_nev) {
+        os << "Nev: ";
+        is >> csapat_nev;
+        os << "Letszam: ";
+        is >> letszam;
+        os << "Edzes idopont kezdete: ";
+        is >> kezdet;
+        os << "Edzes idopont vege: ";
+        is >> veg;
+        os << "Palya nev: ";
+        is >> palya_nev;
+    }
+
+    void jatekosmenu_kezel(std::ostream& os, std::istream& is, std::string& csapat_nev, std::string& j_nev, std::string& poszt, int& experience) {
+        is >> csapat_nev;
+        os << "Nev: ";
+        is >> j_nev;
+        os << "Poszt: ";
+        is >> poszt;
+        os << "Tepasztalat: ";
+        is >> experience;
+    }
+
+    void szoveg(std::ostream& os, std::string nev) {
+        os << "Az egyesulethez hozzaadtam a(z) " << nev << " nevu csapatot." << std::endl;
+        os << "A megfelelo nevu palyakon mar meglevo csapatokat tud edzetni." << std::endl;
+    }
+
+     void egyesulet_megszuntet() {
+        for(int i = 0; i < meret; ++i)
+            delete tarolo[i];
+    }
+
+    ~egyesulet() {
+        egyesulet_megszuntet();
+    }
+};
+
+
+#endif // EGYESULET_H_INCLUDED
diff --git a/ember.h b/ember.h
new file mode 100644
index 0000000..3da2a85
--- /dev/null
+++ b/ember.h
@@ -0,0 +1,15 @@
+#ifndef EMBER_H_INCLUDED
+#define EMBER_H_INCLUDED
+
+#include <string>
+
+class ember {
+    std::string ember_nev;
+public:
+    ember(std::string n) :ember_nev(n) {}
+    std::string getEmberNev() const {return ember_nev;}
+    virtual ~ember() {}
+};
+
+
+#endif // EMBER_H_INCLUDED
diff --git a/gtest_lite.h b/gtest_lite.h
new file mode 100644
index 0000000..4eb522b
--- /dev/null
+++ b/gtest_lite.h
@@ -0,0 +1,218 @@
+#ifndef GTEST_LITE_H
+#define GTEST_LITE_H
+
+/**
+ * \file gtest_lite.h
+ *
+ * Google gtest keretrendszerhez hasonl� rendszer.
+ * Sz.I. 2015., 2016.
+ *
+ * A tesztel�s legalapvet�bb funkci�it t�mogat� f�ggv�nyek �s makr�k.
+ * Nem sz�lbiztos megval�s�t�s.
+ * Szabadon felhaszn�lhat�, b�v�thet�.
+ *
+ * Haszn�lati p�lda:
+ *   Tesztelj�k az f(x)=2*x f�ggv�nyt:
+ * int f(int x) { return 2*x; }
+ *
+ * int main() {
+ *   TEST(TeszEsetNeve, TesztNeve)
+ *     EXPECT_EQ(0, f(0));
+ *     EXPECT_EQ(4, f(2)) << "A f�ggv�ny hib�s eredm�nyt adott" << std::endl;
+ *     ...
+ *   END
+ * ...
+ *
+ * A m�k�d�s r�szleteinek meg�rt�se szorgalmi feladat.
+ */
+
+#include <cassert>
+#include <cmath>
+#include <cstring>
+#include <limits>
+#include <string>
+#include <fstream>
+
+// K�t makr� az egyes tesztek el� �s m�g�:
+// A k�t makr� a kapcsos z�r�jelekkel egy �j blokkot hoz l�tre, amiben
+// a nevek lok�lisak, �gy elker�lhet� a n�v�tk�z�s.
+/// Teszt kezdete. A makr� param�terez�se hasonl�t a gtest
+/// param�terez�s�hez. �gy az itt elk�sz�tett testek k�nnyen �temelhet�k
+/// a gtest keretrendszerbe.
+/// @param C - teszteset neve (csak a gtest kompatibilit�s miatt van k�l�n neve az eseteknek)
+/// @param N - teszt neve
+#define TEST(C, N) { gtest_lite::test.begin(#C"."#N);
+
+/// Teszteset v�ge.
+#define END gtest_lite::test.end(); }
+
+// Eredm�nyek vizsg�lat�t seg�t� makr�k.
+// A param�terek �s a funkci�k a gtest keretrendszerrel megegyeznek.
+/// Sikeres teszt makr�ja
+#define SUCCEED() gtest_lite::test.tstatus(true, __FILE__, __LINE__)
+
+/// Sikertelen teszt makr�ja
+#define FAIL() gtest_lite::test.tstatus(false, __FILE__, __LINE__)
+
+/// Azonoss�got elv�r� makr�
+#define EXPECT_EQ(expected, actual) EXPECTCMP((expected) == (actual), expected, actual)
+
+/// Elt�r�st elv�r� makr�
+#define EXPECT_NE(expected, actual) EXPECTNE((expected) != (actual), expected, actual)
+
+/// Igaz �rt�ket elv�r� makr�
+#define EXPECT_TRUE(actual) EXPECTCMP(actual, "true", actual)
+
+/// Hamis �rt�ket elv�r� makr�
+#define EXPECT_FALSE(actual) EXPECTCMP(!(actual), "false", actual)
+
+/// Val�s sz�mok azonoss�g�t elv�r� makr�
+#define EXPECT_DOUBLE_EQ(expected, actual) EXPECTCMP(gtest_lite::almostEQ(expected, actual), expected, actual)
+
+/// C stringek (const char *) azonoss�g�t tesztel� makr�
+#define EXPECT_STR_EQ(expected, actual) ((actual != NULL) ? \
+    EXPECTCMP(strcmp(expected, actual) == 0, expected, actual) : \
+    EXPECT(false, "STR_EQ NULL pointert kapott!"))
+
+/// C stringek (const char *) elt�r�set tesztel� makr�
+#define EXPECT_STR_NE(expected, actual) ((actual != NULL) ? \
+    EXPECTNE(strcmp(expected, actual) != 0, expected, actual) : \
+    EXPECT(false, "STR_EQ NULL pointert kapott!"))
+
+/// Kiv�telt v�runk
+#define EXPECT_THROW(statement, exception_type) try { gtest_lite::test.tmp = false; statement; } \
+    catch (exception_type) { gtest_lite::test.tmp = true; } \
+    catch (...) { } \
+    EXPECTTHROW(statement, "kivetelt dob.", "nem dobott '"#exception_type"' kivetelt.")
+
+/// Kiv�telt v�runk �s tov�bbdobjuk -- ilyen nincs a gtest-ben
+#define EXPECT_THROW_THROW(statement, exception_type) try { gtest_lite::test.tmp = false; statement; } \
+    catch (exception_type) { gtest_lite::test.tmp = true; throw; } \
+    EXPECTTHROW(statement, "kivetelt dob.", "nem dobott '"#exception_type"' kivetelt.")
+
+/// Nem v�runk kiv�telt
+#define EXPECT_NO_THROW(statement) try { gtest_lite::test.tmp = true; statement; } \
+    catch (...) { gtest_lite::test.tmp = false; }\
+    EXPECTTHROW(statement, "nem dob kivetelt.", "kivetelt dobott.")
+
+
+/// -----------------------------------
+/// Bels� megval�s�t�shoz tartoz� makr�k, �s oszt�lyok.
+/// Nem c�lszer� k�zvetlen�l haszn�lni, vagy m�dos�tani
+/// -----------------------------------
+
+/// EXPECT: makr�, hogy k�nnyen lecser�lhet� legyen
+#define EXPECT(expr, msg) gtest_lite::test.expect(expr, __FILE__, __LINE__, #msg)
+
+/// EXPECTEXP: �ltal�nos kifejez�s ki�rt�kel�se
+#define EXPECTEXP(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #expr) \
+    << "**A(z) '"#act << "'kifejezes\n**   erteke: " << std::boolalpha << (act) \
+    << "\n**   elvart: " << (exp) << std::endl
+
+/// EXPECTCMP: �sszehasonl�t�s
+#define EXPECTCMP(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #act) \
+    << "**A(z) '"#act << "'kifejezes\n**   erteke: " << std::boolalpha << (act) \
+    << "\n**   elvart: " << (exp) << std::endl
+
+/// EXPECTNE: �sszehasonl�t�s
+#define EXPECTNE(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #act) \
+    << "**A(z) '"#act << "'kifejezes\n**   erteke: " << std::boolalpha << (act) \
+    << "\n**   elvart, hogy nem: " << (exp) << std::endl
+
+/// EXPECTTHROW: kiv�telkezel�s
+#define EXPECTTHROW(statement, exp, act) gtest_lite::test.expect(gtest_lite::test.tmp, __FILE__, __LINE__, #statement) \
+    << "**Az utasitas " << (act) \
+    << "\n**Azt vartuk, hogy " << (exp) << std::endl
+
+/// gtest_lite: a keretrendszer f�ggv�nyinek �s objektumainak n�vtere
+namespace gtest_lite {
+
+/// Tesztek �llapot�t t�rol� oszt�ly.
+/// Egyetlen egy statikus p�ld�ny keletkezik, aminek a
+/// destruktora a fut�s v�g�n h�v�dik meg.
+struct Test {
+    int sum;            ///< tesztek sz�ml�l�ja
+    int failed;         ///< hib�s tesztek
+    bool status;        ///< �ppen fut� teszt st�tusza
+    bool tmp;           ///< temp a kiv�telkezel�shez;
+    std::string name;   ///< �ppen fut� teszt neve
+    std::fstream null;  ///< nyel�, ha nem kell ki�rni semmit
+
+    Test() :sum(0), failed(0), status(false), null("/dev/null") {}
+    /// Teszt kezdete
+    void begin(const char *n) {
+        name = n; status = true;
+#ifndef CPORTA
+        std::cerr << "\n---> " << name << std::endl;
+#endif // CPORTA
+        ++sum;
+    }
+    /// Teszt v�ge
+    void end() {
+#ifdef CPORTA
+        if (!status)
+#endif // CPORTA
+        std::cerr << (status ? "     SIKERES" : "** HIBAS ****") << "\t" << name << " <---" << std::endl;
+    }
+
+    /// Eredm�nyt adminisztr�l� tagf�ggv�ny True a j� eset.
+    std::ostream& expect(bool st, const char *file, int line, const char *expr) {
+        if (!st) {
+            ++failed;
+            status = false;
+            std::string str(file);
+            size_t i = str.rfind("\\");
+            if (i == std::string::npos) i = str.rfind("/");
+            if (i == std::string::npos) i = 0; else i++;
+            return std::cerr << "\n**** HIBA: " << &file[i] << "(" << line << "): " << expr << " ****" << std::endl;
+        }
+        return null;
+    }
+
+    /// Eredm�nyt adminisztr�l� tagf�ggv�ny True a j� eset, mindig �r
+    std::ostream& tstatus(bool st, const char *file, int line) {
+        if (!st) {
+            ++failed;
+            status = false;
+        }
+        std::string str(file);
+        size_t i = str.rfind("\\");
+        if (i == std::string::npos) i = str.rfind("/");
+        if (i == std::string::npos) i = 0; else i++;
+        return std::cerr << (status ? "** SIKERES" : "** HIBAS") << " TESZT "<< &file[i] << "(" << line << ") **" << std::endl;
+     }
+
+    /// Destruktor
+    ~Test() {
+#ifdef CPORTA
+        if (failed)
+#endif // CPORTA
+            std::cerr << "\n==== TESZT VEGE ==== HIBAS/OSSZES: " << failed << "/" << sum << std::endl;
+    }
+};
+
+/// Egytelen statikus p�ld�ny
+static Test test;
+
+/// Seg�df�ggv�ny val�s sz�mok �sszehasonl�t�s�hoz
+/// Nem bombabiztos, de nek�nk most j� lesz
+/// Elm�leti h�t�r:
+/// http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
+inline bool almostEQ(double a, double  b) {
+    // eps: ha a relat�v, vagy abszol�t hiba ett�l kisebb, akkor elfogadjuk
+    double eps = 10 * std::numeric_limits<double>::epsilon(); // 10-szer a legkisebb �rt�k
+    if (a == b) return true;
+    if (fabs(a - b) < eps)
+       return true;
+    double aa = fabs(a);
+    double ba = fabs(b);
+    if (aa < ba) {
+        aa = ba;
+        ba = fabs(a);
+    }
+    return (aa - ba) < aa * eps;
+}
+
+} // namespace gtest_lite
+
+#endif // GTEST_LITE_H
diff --git a/idopont.cpp b/idopont.cpp
new file mode 100644
index 0000000..0af810d
--- /dev/null
+++ b/idopont.cpp
@@ -0,0 +1,20 @@
+#include "idopont.h"
+#include <iomanip>
+
+ std::ostream& operator<<(std::ostream& os, Idopont const& ip) {
+    // 02:04
+    os << std::setfill('0') << std::setw(2) << ip.get_ora();
+    os <<  ":";
+    os << std::setfill('0') << std::setw(2) << ip.get_perc();
+    return os;
+ }
+
+std::istream& operator>>(std::istream& is, Idopont& ip) {
+    // 02:14
+    int ora;
+    char kettospont;
+    int perc;
+    is >> ora >> kettospont >> perc;
+    ip = Idopont(ora, perc);
+    return is;
+}
diff --git a/idopont.h b/idopont.h
new file mode 100644
index 0000000..2edf0d6
--- /dev/null
+++ b/idopont.h
@@ -0,0 +1,36 @@
+#ifndef IDOPONT_H_INCLUDED
+#define IDOPONT_H_INCLUDED
+
+#include <iostream>
+
+class Idopont {
+    int percek;
+public:
+    Idopont() {percek = 0;}
+    Idopont(int ora, int perc) {
+        if (ora < 0 || ora >= 24 || perc < 0 || perc >= 60)
+            throw "ora:perc";
+        percek = ora * 60 + perc;
+    }
+
+    int get_ora() const {return percek / 60;}
+
+    int get_perc() const {return percek % 60;}
+
+    int getPercek() const {return percek;}
+
+    bool operator>(Idopont const& ipr) {
+        return this->getPercek() > ipr.getPercek();
+    }
+
+    bool operator<(Idopont const& ipr) {
+        return this->getPercek() < ipr.getPercek();
+    }
+};
+
+std::ostream& operator<<(std::ostream& os, Idopont const& ip);
+
+std::istream& operator>>(std::istream& is, Idopont& ip);
+
+
+#endif // IDOPONT_H_INCLUDED
diff --git a/jatekos.cpp b/jatekos.cpp
new file mode 100644
index 0000000..5ae38cb
--- /dev/null
+++ b/jatekos.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <string>
+#include <fstream>
+
+#include "jatekos.h"
+
+
+void jatekos::kiir(std::ostream& os) {
+    os << "Jatekos neve: " << getEmberNev() << "\tPoszt: " << poszt << "\tTapasztalat: " << experience << std::endl;
+}
+
+void jatekos::fajlba_ir(std::ofstream& fout) {
+    fout << getEmberNev() << " " << poszt << " " << experience << std::endl;
+}
diff --git a/jatekos.h b/jatekos.h
new file mode 100644
index 0000000..27e0ad4
--- /dev/null
+++ b/jatekos.h
@@ -0,0 +1,28 @@
+#ifndef JATEKOS_H_INCLUDED
+#define JATEKOS_H_INCLUDED
+
+#include <iostream>
+#include <string>
+
+#include "ember.h"
+
+class jatekos :public ember{
+    std::string poszt;
+    int experience;
+public:
+    jatekos(std::string n, std::string p, int xp) : ember(n), poszt(p), experience(xp) {}
+
+    //jatekos adatainak kiirasa a standard outputra vagy fajlba
+    void kiir(std::ostream& os);
+    void fajlba_ir(std::ofstream& fout);
+
+    //tapasztalati pont lekerdezo fuggveny
+    int get_experience() const {return experience;}
+
+    //jatekos posztjanak lekerdezese
+    std::string getPoszt() const {return poszt;}
+
+    ~jatekos() {}
+};
+
+#endif // JATEKOS_H_INCLUDED
diff --git a/kezilabda.cpp b/kezilabda.cpp
new file mode 100644
index 0000000..a5f1c44
--- /dev/null
+++ b/kezilabda.cpp
@@ -0,0 +1,27 @@
+#include "kezilabda.h"
+
+bool kezilabda::edzes_e() {
+    int lsz = getLetszam();
+    if(lsz > 12)
+        return true;
+    return false;
+}
+
+void kezilabda::edzes_kiir(std::ostream& os) {
+    if(edzes_e())
+        os << "A(az) " << getNev() << " nevu csapat tud edzeni, megfelelnek az edzeskriteriumok." << std::endl;
+    else
+        os << "A(az) " << getNev() <<" csapat nem tud edzeni, mert nem felelnek meg az edzeskriteriumok." << std::endl;
+}
+
+void kezilabda::kiir(std::ostream& os) {
+    csapat::kiir(os);
+    os << "   Tamogatas(ft): " << tamogatas << std::endl;
+    os << "-----------------------------------------------------------------------------------------------------------------------" << std::endl;
+}
+
+void kezilabda::fajlba_kiir(std::ofstream& fout) {
+    setAzonosito(3);
+    csapat::fajlba_kiir(fout);
+    fout << tamogatas << std::endl;
+}
diff --git a/kezilabda.h b/kezilabda.h
new file mode 100644
index 0000000..ca1e4f8
--- /dev/null
+++ b/kezilabda.h
@@ -0,0 +1,28 @@
+#ifndef KEZILABDA_H_INCLUDED
+#define KEZILABDA_H_INCLUDED
+
+#include <string>
+
+#include "csapat.h"
+
+class kezilabda :public csapat{
+    double tamogatas;
+public:
+    kezilabda(std::string n, int lsz, Idopont k, Idopont v, std::string pn, double t) :csapat(n,lsz,k,v,pn), tamogatas(t) {}
+
+    bool edzes_e();
+
+    void edzes_kiir(std::ostream& os);
+
+    void setTamogatas(double t) {tamogatas = t;}
+
+    //tamogatas lekerdezese
+    double getTamogatas() const;
+
+    //kiiras a kezilabda csapat adatainak az std outpura vagy a fajlba
+    void kiir(std::ostream& os);
+
+    void fajlba_kiir(std::ofstream& fout);
+};
+
+#endif // KEZILABDA_H_INCLUDED
diff --git a/kosarlabda.cpp b/kosarlabda.cpp
new file mode 100644
index 0000000..4840462
--- /dev/null
+++ b/kosarlabda.cpp
@@ -0,0 +1,27 @@
+#include "kosarlabda.h"
+
+bool kosarlabda::edzes_e() {
+    int lsz = getLetszam();
+    if(lsz > 8 && pompom > 5)
+        return true;
+    return false;
+}
+
+void kosarlabda::edzes_kiir(std::ostream& os) {
+    if(edzes_e())
+        os << "A(az) " << getNev() <<" csapat tud edzeni, megfelelnek az edzeskriteriumok." << std::endl;
+    else
+        os << "A(az) " << getNev() <<" csapat nem tud edzeni, mert nem felelnek meg az edzeskriteriumok." << std::endl;
+}
+
+void kosarlabda::kiir(std::ostream& os) {
+    csapat::kiir(os);
+    os << "   Pompom: " << pompom << std::endl;
+    os << "------------------------------------------------------------------------------------------------------------------" << std::endl;
+}
+
+void kosarlabda::fajlba_kiir(std::ofstream& fout) {
+    setAzonosito(2);
+    csapat::fajlba_kiir(fout);
+    fout << pompom << std::endl;
+}
diff --git a/kosarlabda.h b/kosarlabda.h
new file mode 100644
index 0000000..b113c87
--- /dev/null
+++ b/kosarlabda.h
@@ -0,0 +1,24 @@
+#ifndef KOSARLBADA_H_INCLUDED
+#define KOSARLBADA_H_INCLUDED
+
+#include <string>
+
+#include "csapat.h"
+
+class kosarlabda :public csapat{
+    int pompom;
+public:
+    kosarlabda(std::string n, int lsz, Idopont k, Idopont v, std::string pn, int pp) :csapat(n,lsz,k,v,pn), pompom(pp) {}
+
+    bool edzes_e();
+
+    void setPompom(int p) {pompom = p;}
+
+    void edzes_kiir(std::ostream& os);
+
+    void kiir(std::ostream& os);
+
+    void fajlba_kiir(std::ofstream& fout);
+};
+
+#endif // KOSARLBADA_HINCLUDED
diff --git a/labdarugas.cpp b/labdarugas.cpp
new file mode 100644
index 0000000..201574e
--- /dev/null
+++ b/labdarugas.cpp
@@ -0,0 +1,28 @@
+#include "labdarugas.h"
+
+bool labdarugas::edzes_e() {
+    int lsz = getLetszam();
+    if(lsz > 10 && edzo_szam > 1)
+        return true;
+    return false;
+}
+
+void labdarugas::edzes_kiir(std::ostream& os) {
+    if(edzes_e())
+        os << "A(az) " << getNev() <<" csapat tud edzeni, megfelelnek az edzeskriteriumok." << std::endl;
+    else
+        os << "A(az) " << getNev() <<" csapat nem tud edzeni, mert nem felelnek meg az edzeskriteriumok." << std::endl;
+}
+
+void labdarugas::kiir(std::ostream& os) {
+    csapat::kiir(os);
+    os << "   Edzoszam: " << edzo_szam << std::endl;
+    os << "----------------------------------------------------------------------------------------------------------------" << std::endl;
+}
+
+void labdarugas::fajlba_kiir(std::ofstream& fout) {
+    setAzonosito(1);
+    csapat::fajlba_kiir(fout);
+    fout << edzo_szam << std::endl;
+}
+
diff --git a/labdarugas.h b/labdarugas.h
new file mode 100644
index 0000000..6556f94
--- /dev/null
+++ b/labdarugas.h
@@ -0,0 +1,27 @@
+#ifndef LABDARUGAS_H_INCLUDED
+#define LABDARUGAS_H_INCLUDED
+
+#include <string>
+
+#include "csapat.h"
+
+class labdarugas :public csapat{
+    int edzo_szam;
+public:
+    labdarugas(std::string n, int lsz, Idopont k, Idopont v, std::string pn, int esz) : csapat(n,lsz,k,v,pn), edzo_szam(esz) {}
+
+    int getEdzo() const {return edzo_szam;}
+
+    void setEdzo(int e) {edzo_szam = e;}
+
+    bool edzes_e();
+
+    void edzes_kiir(std::ostream& os);
+
+    void kiir(std::ostream& os);
+
+    void fajlba_kiir(std::ofstream& fout);
+};
+
+
+#endif // LABDARUGAS_H_INCLUDED
diff --git a/mafc.txt b/mafc.txt
new file mode 100644
index 0000000..b4ec7f5
--- /dev/null
+++ b/mafc.txt
@@ -0,0 +1,4 @@
+1 alma 3 12:00 13:00 kis 2
+Peti csatar 10
+Lali kapus 20
+Imi vedo 50
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..bdc871e
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,311 @@
+#include <iostream>
+#include <string>
+#include <fstream>
+
+#include <locale>
+#include <cstring>
+
+#include "csapat.h"
+#include "egyesulet.h"
+#include "ember.h"
+#include "jatekos.h"
+#include "kezilabda.h"
+#include "kosarlabda.h"
+#include "labdarugas.h"
+#include "palya.h"
+#include "csarnok.h"
+#include "idopont.h"
+#include "gtest_lite.h"
+
+/// C stringek (const char *) azonosságát tesztelõ makró
+#define EXPECT_STR_EQ(expected, actual) ((actual != NULL) ? \
+    EXPECTCMP(strcmp(expected, actual) == 0, expected, actual) : \
+    EXPECT(false, "STR_EQ NULL pointert kapott!"))
+
+/// EXPECT: makró, hogy könnyen lecserélhetõ legyen
+#define EXPECT(expr, msg) gtest_lite::test.expect(expr, __FILE__, __LINE__, #msg)
+
+#define EXPECTCMP(expr, exp, act) gtest_lite::test.expect(expr, __FILE__, __LINE__, #act) \
+    << "**A(z) '"#act << "'kifejezes\n**   erteke: " << std::boolalpha << (act) \
+    << "\n**   elvart: " << (exp) << std::endl
+
+#define TESTLEVEL 1
+
+#if TESTLEVEL == 0
+int main() {
+    egyesulet<csapat> csapatok;
+    egyesulet<palya> palyak;
+
+    //csapat1
+    Idopont i1k(12, 30);
+    Idopont i1v(13, 30);
+
+    //csapat2/1
+    Idopont i2k(13, 35);
+    Idopont i2v(14, 45);
+
+    csapatok.hozzaad(new labdarugas("alma", 3, i1k, i1v, "kis", 3));
+    TEST(csapat, konstruktor) {
+        EXPECT_STR_EQ("alma", csapatok[0].getNev().c_str());
+        EXPECT_EQ(3, csapatok[0].getLetszam());
+        EXPECT_STR_EQ("kis", csapatok[0].getPalya().c_str());
+    }END
+
+    TEST(csapat, edzesek()) {
+        std::stringstream ss1;
+        csapatok[0].edzes_kiir(ss1);
+        EXPECT_STR_EQ("A(az) alma csapat nem tud edzeni, mert nem felelnek meg az edzeskriteriumok.\n", ss1.str().c_str());
+    }END
+
+    TEST(egyesulet, letszam) {
+        EXPECT_EQ(3, csapatok.egyesulet_letszam());
+    }END
+
+    csapatok["alma"].jatekos_hozzaad(new jatekos("Soma", "csatar", 10));
+    csapatok["alma"].jatekos_hozzaad(new jatekos("Bence", "vedo", 30));
+    csapatok["alma"].jatekos_hozzaad(new jatekos("Akos", "kapus", 5));
+    TEST(jatekos, konstruktor) {
+        EXPECT_STR_EQ("Soma", csapatok["alma"][0].getEmberNev().c_str());
+        EXPECT_STR_EQ("csatar", csapatok["alma"][0].getPoszt().c_str());
+        EXPECT_EQ(10, csapatok["alma"][0].get_experience());
+    }END
+
+    palyak.hozzaad(new csarnok("kis"));
+    TEST(palya, konstruktor) {
+        EXPECT_STR_EQ("kis", palyak[0].getNev().c_str());
+    }END
+
+    csapatok.hozzaad(new kezilabda("korte", 3, i2k, i2v, "kis", 8));
+    palyak["kis"].csapat_hozzaad(new labdarugas("alma", 2, i1k, i1v, "kis", 3));
+    palyak["kis"].csapat_hozzaad(new kosarlabda("korte", 3, i2k, i2v, "kis", 8));
+    TEST(egyesulet, palyak_listaz1) {
+        std::stringstream ss3;
+        palyak.listaz(ss3);
+        EXPECT_STR_EQ("A(az) kis nevu palya ezekben az idopontokban foglalt: 12:30-13:30, 13:35-14:45\n", ss3.str().c_str());
+    }END
+
+    palyak.hozzaad(new csarnok("nagy"));
+    TEST(egyesulet, palyak_listaz2) {
+        std::stringstream ss4;
+        palyak.listaz(ss4);
+        EXPECT_STR_EQ("A(az) kis nevu palya ezekben az idopontokban foglalt: 12:30-13:30, 13:35-14:45\n"
+                      "A(az) nagy nevu palyahoz nincs egy csapat se hozzaadva.\n",
+                      ss4.str().c_str());
+    }END
+
+    Idopont i3k(14, 40);
+    Idopont i3v(15, 45);
+
+    csapatok.hozzaad(new kosarlabda("banan", 3, i3k, i3v, "kis", 3));
+    TEST(egyesulet, operator<) {
+         std::stringstream ss5;
+         palyak.listaz(ss5);
+         EXPECT_STR_EQ("A(az) kis nevu palya ezekben az idopontokban foglalt: 12:30-13:30, 13:35-14:45\n"
+                      "A(az) nagy nevu palyahoz nincs egy csapat se hozzaadva.\n",
+                      ss5.str().c_str());
+    }END
+
+    csapat *cs = new kosarlabda("banan", 3, i1k, i1v, "kis", 3);
+    TEST(egyesulet, isElement()) {
+        std::stringstream ss6;
+        csapatok.getIsElement(cs, ss6);
+        EXPECT_STR_EQ("igen\n", ss6.str().c_str());
+    }END
+
+    csapatok["alma"].jatekos_hozzaad(new jatekos("Isti", "csatar", 20));
+    TEST(jatekos, csere) {
+        EXPECT_STR_EQ("Isti", csapatok["alma"][2].getEmberNev().c_str());
+    }END
+
+    return 0;
+}
+#endif // TESTLEVEL
+
+#if TESTLEVEL == 1
+int main()
+{
+    std::ofstream fout;
+    std::ifstream fin;
+    std::string sor;
+
+    fin.open("mafc.txt");
+
+    egyesulet<csapat> csapatok;
+    egyesulet<palya> palyak;
+
+    //csapat
+    std::string csapat_nev;
+    int letszam;
+    Idopont kezdet;
+    Idopont veg;
+    //labdarugas
+    int edzo_szam;
+    //kosarlabda
+    int pompom;
+    //kezilabda
+    int tamogatas;
+
+    int csapat_azonosito;
+    //jatekos letrehozasaert felelos valtozok
+    std::string j_nev;
+    std::string poszt;
+    int experience;
+
+    //palya letrehozasaert felelos valtozok
+    std::string palya_nev;
+
+     //fajlbol olvasasert felelos altalanos csapatvaltozok
+    std::string fajlbol_csapatnev;
+    int fajlbol_letszam;
+    Idopont fajlbol_kezdet;
+    Idopont fajlbol_veg;
+    //labdarugas
+    int fajlbol_edzoszam;
+    //kosarlabda
+    int fajlbol_pompom;
+    //kezilabda
+    int fajlbol_tamogatas;
+
+    //fajlbol jatekos valtozok
+    std::string fajlbol_nev;
+    std::string fajlbol_poszt;
+    int fajlbol_experience;
+
+    //fajlbol palya valtozok
+    std::string fajlbol_palyanev;
+
+    //fajlbol olvasas
+    while(!fin.eof()) {
+        getline(fin, sor);
+        if(sor != "Ures") {
+            std::istringstream be(sor);
+            be >> csapat_azonosito >> fajlbol_csapatnev >> fajlbol_letszam >> fajlbol_kezdet >> fajlbol_veg >> fajlbol_palyanev;
+            palyak.hozzaad(new csarnok(fajlbol_palyanev));
+            csapat *cs = NULL;
+            switch(csapat_azonosito) {
+                case 1:
+                    be >> fajlbol_edzoszam;
+                    cs = new labdarugas(fajlbol_csapatnev, fajlbol_letszam, fajlbol_kezdet, fajlbol_veg, fajlbol_palyanev, fajlbol_edzoszam);
+                    break;
+                case 2:
+                    be >> fajlbol_pompom;
+                    cs = new kosarlabda(fajlbol_csapatnev, fajlbol_letszam, fajlbol_kezdet, fajlbol_veg, fajlbol_palyanev, fajlbol_pompom);
+                    break;
+                case 3:
+                    be >> fajlbol_tamogatas;
+                    cs = new kezilabda(fajlbol_csapatnev, fajlbol_letszam, fajlbol_kezdet, fajlbol_veg, fajlbol_palyanev, fajlbol_tamogatas);
+                    break;
+            }
+            if(cs == NULL)
+                throw "HIBA";
+            csapatok.hozzaad(cs);
+            palyak[fajlbol_palyanev].csapat_hozzaad(cs);
+            while(getline(fin,sor) && sor.size() != 0) {
+                std::istringstream be0(sor);
+                be0 >> fajlbol_nev >> fajlbol_poszt >> fajlbol_experience;
+                csapatok[fajlbol_csapatnev].jatekos_hozzaad(new jatekos(fajlbol_nev, fajlbol_poszt, fajlbol_experience));
+            }
+        }
+    }
+
+    //ez mar a foprogram lesz
+    std::cout << "Udvozlom a MAFC sportegyesulet nyilvantarto programomban!\n\n"
+        << "A kezeles egyszeru, az alabbi menupontok kezelesevel lehet vezenyelni a mukodest:\n"
+        << "1-es gomb: Uj csapat letrehozasa.\n"
+        << "2-es gomb: Megfelelo nevu csapathoz uj jatekos hozzaadas.\n"
+        << "3-as gomb: Uj palya letrehozasa.\n"
+        << "4-es gomb: Egyesulet palyainak nevenek kilistazasa.\n"
+        << "5-os gomb: Egyesulet minden adatanak listazasa.\n"
+        << "6-os gomb: A megfelelo nevu csapat adatainak kilistazasa, jatekosokkal egyutt.\n"
+        << "7-es gomb: Csapatot meg lehet szuntetni.\n"
+        << "8-as gomb: Kilepes.\n";
+    std::cout << "**********************************************************************************" << std::endl;
+
+    //menukezeles
+    int szam;
+    char betu;
+
+    while(std::cin >> szam && szam != 8) {
+        switch(szam) {
+            case 1:
+                std::cout << "a,  Labdarugas     b,  Kosarlabda     c,  Kezilabda     e,  Kilepes" << std::endl;
+                while(std::cin >> betu && betu!='e') {
+                    csapat *cs = NULL;
+                    switch(betu) {
+                        case 'a':
+                            csapatok.csapatmenu_kezel(std::cout, std::cin, csapat_nev, letszam, kezdet, veg, palya_nev);
+                            std::cout << "Edzo szam: ";
+                            std::cin >> edzo_szam;
+                            cs = new labdarugas(csapat_nev, letszam, kezdet, veg, palya_nev, edzo_szam);
+                            csapatok.szoveg(std::cout, csapat_nev);
+                        break;
+                        case 'b':
+                            csapatok.csapatmenu_kezel(std::cout, std::cin, csapat_nev, letszam, kezdet, veg, palya_nev);
+                            std::cout << "Pompom lanyok szam: ";
+                            std::cin >> pompom;
+                            cs = new kosarlabda(csapat_nev, letszam, kezdet, veg, palya_nev, pompom);
+                            csapatok.szoveg(std::cout, csapat_nev);
+                        break;
+                        case 'c':
+                            csapatok.csapatmenu_kezel(std::cout, std::cin, csapat_nev, letszam, kezdet, veg, palya_nev);
+                            std::cout << "Tamogatas(ft): ";
+                            std::cin >> tamogatas;
+                            cs = new kezilabda(csapat_nev, letszam, kezdet, veg, palya_nev, tamogatas);
+                            csapatok.szoveg(std::cout, csapat_nev);
+                        break;
+                        default:
+                            std::cout << "Nem jo ertekeket adott." << std::endl;
+                    }
+                    if(cs == NULL)
+                        throw "HIBA";
+                    csapatok.hozzaad(cs);
+                    palyak[fajlbol_palyanev].csapat_hozzaad(cs);
+                    std::cout << "Tovabbi lepesekhez az e gomb megnyomasa utan valaszthat szamot a tovabbi menupontok aktivalasahoz." << std::endl;
+                }
+            break;
+            case 2:
+                std::cout << "Melyik letezo csapathoz kivanja hozza adni?" << std::endl;
+                csapatok.jatekosmenu_kezel(std::cout, std::cin, csapat_nev, j_nev, poszt, experience);
+                csapatok[csapat_nev].jatekos_hozzaad(new jatekos(j_nev, poszt, experience));
+                std::cout << "A csapathoz hozzaadtam a(z) " << j_nev << " nevu jatekost." << std::endl;
+            break;
+            case 3:
+                std::cout << "Az egyesulethez valamilyen nevu, es uzemeltetesi intervalummal rendelkezo palyat tud hozzadni." << std::endl;
+                std::cout << "Palya neve: ";
+                std::cin >> palya_nev;
+                palyak.hozzaad(new csarnok(palya_nev));
+            break;
+            case 4:
+                std::cout << "Az egyesulet osszes palyainak neve:" << std::endl;
+                palyak.tipus_kiir(std::cout);
+            break;
+            case 5:
+                std::cout << "A MAFC egyesulet osszes adata: " << std::endl;
+                csapatok.listaz(std::cout);
+                csapatok.edzesek(std::cout);
+                palyak.listaz(std::cout);
+                csapatok.letszam_kiir(std::cout);
+            break;
+            case 6:
+                std::cout << "Adja meg a keresendo csapat nevet: " << std::endl;
+                std::cin >> csapat_nev;
+                csapatok[csapat_nev].kiir(std::cout);
+                csapatok[csapat_nev].jatekos_listaz(std::cout);
+            break;
+            case 7:
+                std::cout << "Melyik csapatot kivanja torolni?" << std::endl;
+                std::cin >> csapat_nev;
+                csapatok.csapat_torol(csapat_nev);
+            break;
+            default:
+                std::cout << "Nem jo erteket adott." << std::endl;
+        }
+    }
+
+    fin.close();
+    fout.open("mafc.txt");
+    csapatok.csapatok_kiir_fajlba(fout);
+
+    return 0;
+}
+#endif // TESTLEVEL
diff --git a/palya.cpp b/palya.cpp
new file mode 100644
index 0000000..d32ee6d
--- /dev/null
+++ b/palya.cpp
@@ -0,0 +1,52 @@
+#include <iostream>
+
+#include "palya.h"
+
+bool palya::elso(csapat *a, csapat *b) {
+    return a->getIdopontVeg() > b->getIdopontKezdet() && a->getIdopontKezdet() < b->getIdopontKezdet();
+}
+
+bool palya::masodik(csapat *a, csapat *b) {
+    return a->getIdopontKezdet() < b->getIdopontVeg() && a->getIdopontVeg() > b->getIdopontVeg();
+}
+
+bool palya::vizsgal_1(csapat *uj) {
+    for(int i = 0; i < csapatok_szama; ++i)
+        if(elso(csapatok[i], uj))
+            return true;
+    return false;
+}
+
+bool palya::vizsgal_2(csapat *uj) {
+    for(int i = 0; i < csapatok_szama; ++i)
+        if(masodik(csapatok[i], uj))
+            return true;
+    return false;
+}
+
+void palya::csapat_hozzaad(csapat *uj) {
+    if(vizsgal_1(uj)) return;
+    if(vizsgal_2(uj)) return;
+
+    if(csapatok_szama < kapacitas)
+        csapatok[csapatok_szama++] = uj;
+    else
+        throw "HIBA";
+}
+
+void palya::kiir(std::ostream& os) {
+    if(csapatok_szama == 0)
+        os << "A(az) " << palya_nev << " nevu palyahoz nincs egy csapat se hozzaadva." << std::endl;
+    else {
+        os << "A(az) " << palya_nev << " nevu palya ezekben az idopontokban foglalt: ";
+        int i = 0;
+        while(i != csapatok_szama) {
+            os << csapatok[i]->getIdopontKezdet();
+            os <<"-";
+            os << csapatok[i]->getIdopontVeg();
+            if(i != csapatok_szama - 1) os << ", ";
+            ++i;
+        }
+        os << std::endl;
+    }
+}
diff --git a/palya.h b/palya.h
new file mode 100644
index 0000000..1cb8813
--- /dev/null
+++ b/palya.h
@@ -0,0 +1,42 @@
+#ifndef PALYA_H_INCLUDED
+#define PALYA_H_INCLUDED
+
+#include <string>
+
+#include "csapat.h"
+
+
+///csapatokat tarol egy palya objektum
+class palya {
+    static const int kapacitas = 5;
+    std::string palya_nev;
+    csapat *csapatok[kapacitas];
+    int csapatok_szama;
+public:
+    palya(std::string palya_nev) :palya_nev(palya_nev), csapatok_szama(0) {}
+
+    std::string getNev() const {return palya_nev;}
+
+    ///palyahoz csapatot lehet hozzaadni
+    void csapat_hozzaad(csapat *uj);
+
+    void palyanev_kiir(std::ostream& os) {os << palya_nev << std::endl;}
+
+    void kiir(std::ostream& os);
+
+    bool elso(csapat *a, csapat *b);
+    bool masodik(csapat *a, csapat *b);
+
+    bool vizsgal_1(csapat *uj);
+    bool vizsgal_2(csapat *uj);
+
+    virtual void torol() {
+        for(int i = 0; i < csapatok_szama; ++i)
+            delete csapatok[i];
+    }
+
+    virtual ~palya() {}
+};
+
+
+#endif // PALYA_H_INCLUDED
-- 
GitLab