#include <iostream>
#include <fstream>
#include <cstdlib>


using namespace std;

struct hivas{

    int kezdora, kezdperc, kezdmperc, vegora, vegperc, vegmperc;
    string hivottszam;


}egyhivas[200];

bool mobilszam(string telefonszam);

int hivasperc(int kezdora, int kezdperc, int kezdmperc, int vegora, int vegperc, int vegmperc);

int hivasperc(hivas egyhivas); ///más a paraméter!

bool csucsidoshivas(hivas egyhivas);

int main()
{
    setlocale(LC_ALL, "hun");


    ifstream be;
    be.open("HIVASOK.txt");
    if(be.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }

    int i=0;
    while(be >> egyhivas[i].kezdora >> egyhivas[i].kezdperc >> egyhivas[i].kezdmperc >>
          egyhivas[i].vegora >> egyhivas[i].vegperc >> egyhivas[i].vegmperc >>
          egyhivas[i].hivottszam ) {

       i++;
    }
    int db=i;
    be.close();

    //1. feladat
    cout << "1. feladat" << endl;
    string telefonszam;
    cout << "Adjon meg egy számot: ";
    cin >> telefonszam;

    if(mobilszam(telefonszam)) {

        cout << "A telefonszám mobilszám." << endl;

    }
    else {

         cout << "A telefonszám vezetékes szám." << endl;

    }
    //2. feladat: Hívás idotartam percben
    cout << "2. feladat" << endl;
    int kezdora, kezdperc, kezdmperc, vegora, vegperc, vegmperc;
    cout << "Adja meg a hívás kezdetét ó p mp alakban: ";
    cin >> kezdora >> kezdperc >> kezdmperc;
    cout << "Adja meg a hívás végét ó p mp alakban: ";
    cin >> vegora >> vegperc >> vegmperc;

    cout << "A hívás " << hivasperc(kezdora, kezdperc, kezdmperc, vegora, vegperc, vegmperc) << " percig tartott." << endl;

    //3. feladat: az összes hívás percének fájlba írása

    ofstream ki;
    ki.open("percek.txt");
    if(ki.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }
    cout << "3. feladat" << endl;
    for(int i=0; i<db; i++) {

        ki  << hivasperc(egyhivas[i]) << " " << egyhivas[i].hivottszam << endl;

    }
    ki.close();
    cout << "A fájlbaírás kész." << endl;

    //4. feladat: Csúcsídon belüli és azon kívüli beszélgetések száma
    cout << "4. feladat" << endl;
    int csucsidodb=0;
    for(int i=0; i<db; i++) {

        if(csucsidoshivas(egyhivas[i])) csucsidodb++;

    }
    cout  << "Csúcsidoben történt hívások száma: " << csucsidodb << endl;
    cout  << "Csúcsidon kívül történt hívások száma: " << db-csucsidodb << endl;

    //5. feladat: Mobil és vezetékes beszélgetések percben
    cout << "5. feladat" << endl;
    int mobilperc=0, vezetekesperc=0;
    for(int i=0; i<db; i++) {

        if(mobilszam(egyhivas[i].hivottszam)) mobilperc += hivasperc(egyhivas[i]);
        else vezetekesperc += hivasperc(egyhivas[i]);

    }
    cout << "Összes mobilhívás: " << mobilperc << " perc" << endl;
    cout << "Összes vezetékes hívás: " << vezetekesperc << " perc" << endl;

    //6. feladat: Csúcsídos hívásokért fizetendo összeg
    cout << "6. feladat" << endl;
    float osszeg=0;
    for(int i=0; i<db; i++) {

        if(csucsidoshivas(egyhivas[i])) {

            if(mobilszam(egyhivas[i].hivottszam))  osszeg += hivasperc(egyhivas[i])*30;
            else osszeg += hivasperc(egyhivas[i])*69.175;

        }

    }
    cout << "A csúcsidoben történt hívásokért fizetendo összeg: " << osszeg << " Ft" << endl;
    cin.get();
    return 0;
}

bool mobilszam(string telefonszam) {

     if((telefonszam[0]=='3' && telefonszam[1]=='9') ||  (telefonszam[0]=='4' &&

telefonszam[1]=='1') || (telefonszam[0]=='7' && telefonszam[1]=='1')) return true;
     else return false;

}

int hivasperc(int kezdora, int kezdperc, int kezdmperc, int vegora, int vegperc, int vegmperc){

        int perc=(vegora-kezdora)*60+vegperc-kezdperc;
        if(vegmperc-kezdmperc>0) perc++; //minden megkezdett perc egy egész percnek számít
        return perc;

}

int hivasperc(hivas egyhivas){

        int perc=(egyhivas.vegora-egyhivas.kezdora)*60+egyhivas.vegperc-egyhivas.kezdperc;
        if((egyhivas.vegmperc-egyhivas.kezdmperc)>0) perc++; //minden megkezdett perc egy egész percnek számít
        return perc;

}

bool csucsidoshivas(hivas egyhivas) {

     if(egyhivas.kezdora>=7 && egyhivas.kezdora<18) return true;
     else return false;

}