#include <iostream>
#include <list>
#include <vector>
#include <fstream>
#include <sstream>

using namespace std;

struct sportklub
{
private:
    list<list<vector<bool>>> adat;
    int csoportok,emberek,kerdesek;
public:

    void betolt(string nev)
    {
        ifstream be(nev.c_str());

        while(be.good())
        {
            string a,b,c;

            getline(be,a);
            getline(be,b);
            getline(be,c);
            stringstream ss;
            ss<<a;
            ss>>csoportok;
            ss.clear();
            ss<<b;
            ss>>emberek;
            ss.clear();
            ss<<c;
            ss>>kerdesek;
            ss.clear();


            for(int k=0; k<csoportok; k++)
            {

                list<vector<bool>> csoport;
                for(int i=0; i<emberek; i++)
                {

                    vector<bool> kerdoiv;

                    string sor;
                    getline(be,sor);
                    stringstream tmp;
                    tmp<<sor;
                    for(int j=0; j<kerdesek; j++)
                    {
                        string elemm;
                        bool elemm2;
                        getline(tmp,elemm,',');
                        if(elemm=="true")
                        {
                            elemm2=true;
                        }
                        else if(elemm=="false")
                        {
                            elemm2=false;
                        }
                        kerdoiv.push_back(elemm2);
                    }
                    csoport.push_back(kerdoiv);
                }

                adat.push_back(csoport);
            }

        }
    }

void fajlbair()
{
    ofstream ki("eredmeny.txt");
    ki<<"Csoportok száma: "<<csoportok<<endl;
    ki<<"Résztvevők száma csoportonként: "<<emberek<<endl;
    ki<<"Kérdések száma: "<<kerdesek<<endl;

    for (list<vector<bool>> l : adat)
    {
        for (vector<bool> v : l)
        {
            for (bool b : v)
            {
               if(b){ki<<"true"<<",";}
               else{ki<<"false"<<",";}

            }
            ki<<endl;
        }
    }


}
void cukorbeteg()
{
    int beteg=0;
        for (auto l : adat)
    {
        for (auto v : l)
        {
            int igen=0;
            for (auto b : v)
            {
               if(b){igen++;}
            }
            if(igen>=2){beteg++;}

        }
    }
    double beteg2=beteg;
    cout<<"Veszelyeztetettek szama: "<<beteg<<endl;
    cout<<"Szazalek: "<<beteg2/(emberek*csoportok)*100<<"%"<<endl;
}
void hozzaad(string a, string b, string c, string d, string e, string f)
{
    emberek ++;
    bool b1,b2,b3,b4,b5,b6;
    if(a=="true")
    b1=true;
    else b1=false;
    if(b=="true")
    b2=true;
    else b2=false;
    if(c=="true")
    b3=true;
    else b3=false;
    if(d=="true")
    b4=true;
    else b4=false;
    if(e=="true")
    b5=true;
    else b5=false;
    if(f=="true")
    b6=true;
    else b6=false;

    vector<bool> egy;
    egy.push_back(b1);
    egy.push_back(b2);
    egy.push_back(b3);

    vector<bool> ketto;
    ketto.push_back(b4);
    ketto.push_back(b5);
    ketto.push_back(b6);
    int szamol=1;
    for(list<list<vector<bool>>> ::iterator i=adat.begin();i!=adat.end();i++)
    {
        if(szamol==1)
        i->push_back(egy);
        if(szamol==2)
        i->push_back(ketto);
        szamol++;
    }
}
};


int main()
{
    cout<< "Parancsok:" <<endl;
    cout<<"betolt :betolti a fajlt az adatszerkezetbe - fajlnev:adatok.txt"<<endl<<"fajlbair :kimenti az adatokat egy fajlba"<<endl;
    cout<<"feladat :megadja, hogy hany embernel magas a cukorbetegseg kialakulasanak kockazata es, hogy ez hany szazaleka az osszes embernek"<<endl;
    cout<<"hozzaad :be kell irni 6 szot(true/false) a konzolra szokozzel elvalasztva, ezek lesznek a ket uj jelentkezo valaszai"<<endl<<endl;
    cout<<"Mi a parancs?"<<endl;

    sportklub s;


string parancs;
cin>>parancs;
while(parancs!="vege")
{
    if(parancs=="betolt")
    {
        cout<<"Mi a fajl neve?"<<endl;
        string fajlnev;
        cin>>fajlnev;
        s.betolt(fajlnev);
    }
    else if(parancs=="fajlbair")
    {
        s.fajlbair();
        cout<<"Kimeneti fajl: eredmeny.txt"<<endl;

    }
    else if(parancs=="feladat")
    {
        s.cukorbeteg();
    }
    else if(parancs=="hozzaad")
    {
        cout<<"Ird be a 6 szot!"<<endl;
        string a,b,c,d,e,f;
        cin>>a>>b>>c>>d>>e>>f;
        if((a=="true" || a=="false") && (b=="true" || b=="false") && (c=="true" || c=="false") && (d=="true" || d=="false") && (e=="true" || e=="false") && (f=="true" || f=="false"))
        {s.hozzaad(a,b,c,d,e,f);
        }
        else{cout<<"hibas bemenet"<<endl;}
    }
    cout<<"Mi a parancs?"<<endl;
    cin>>parancs;
}


    return 0;
}
