// https://odorpeter.hu/

#include <iostream>     // cin cout
#include <iomanip>      // setw()
#include <map>          // "szótár" (map) adattípushoz
#include <vector>       // vektor (vector) adattípushoz
#include <fstream>      // szöveges fájlok kezelése

using namespace std;

void inicializalas(map<string,int> &m)
{
    m["hétfő"] = 0;
    m["kedd"] = 0;
    m["szerda"] = 0;
    m["csütörtök"] = 0;
    m["péntek"] = 0;
}

void map_feltoltes(map<string,int> &m)
{
    cout << "------------------------------------------------------\n";
    cout << "            Az 5 munka beosztása óránként             \n";
    cout << "------------------------------------------------------\n";

    vector<string> temp;
    vector<vector<string>> be;
    string nap;
    ifstream fbe;
    fbe.open("m_munka_n_napra.txt");
    int i=0;
    while(fbe>>nap)
    {
        cout << setw(10) << nap <<  " ";
        if(nap!="-")
        {
            m[nap]++;
        }
        // csak a szép kiírás miatt
        i++;
        if(i==5)
        {
            cout << endl;
            i=0;
        }
    }
    fbe.close();
}

void map_print(map<string,int> &m)
{
    string key;
    int value;
    cout << "------------------------------------------------------\n";
    cout << "   Az egyes napokon hány munka kerül sorra az ötből   \n";
    cout << "------------------------------------------------------\n";

    //az alábbi for ciklus megoldás C++17 vagy magasabb fordító esetén működik
    //a map a key alapján rendezett: csütörtök "előbb van", mint hétfő...
    /*
    for(auto [key,value]:m)   // it, mint iterator...
    {
        cout << setw(10) << key << ": " << setw(3) << value << endl;
    }
    */
    //ami bitosan működik az a következő:
    //itt elem -- > pl. m["csütörtök"] és a
    //first a "csütürtök". azaz a kulcs, a second a kulcshoz tartozó érték (value)
    for(auto elem:m)
    {
        cout << setw(10) << elem.first << ": " << setw(3) << elem.second << endl;
    }
}

int main()
{
    setlocale(LC_ALL, "hun");

    map<string,int> napok;
    // map<string,int> :: iterator it;
    inicializalas(napok);
    map_feltoltes(napok);
    map_print(napok);

    return 0;
}

