#include <iostream>
#include <cstdlib>
#include <fstream>
#include <sstream>

using namespace std;


struct egyfuvar{

    int nap, fuvarszam, tav;

}fuvar[280]; ///maximum 7*40=280

int db;
///függvények deklarációja

bool vanfuvar(int nap);         ///4. feladathoz
int fuvarszam(int nap);         ///5. feladathoz
int tavolsag(int nap);          ///6. feladathoz
int dijazas(int tavolsag);      ///7. és 8. feladathoz

int main()
{
     setlocale(LC_ALL, "hun");
    ///1. feladat
    ifstream be;
    be.open("tavok.txt");
    if(be.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }

    int i=0;

    while(be >> fuvar[i].nap >> fuvar[i].fuvarszam >> fuvar[i].tav){

        i++;
    }
    db=i;
    be.close();
    cout << "A fájl beolvasásása sikerült." << endl;
    ///sorbarendezzük napok és azon belül fuvarszám szerint
    for(i=0; i<db-1; i++) {

        for(int j=i+1; j<db; j++){

            if(fuvar[j].nap < fuvar[i].nap) {

                egyfuvar csere = fuvar[i];
                fuvar[i] = fuvar[j];
                fuvar[j] = csere;

            }
            ///egy napon belüli csere
            if(fuvar[j].nap == fuvar[i].nap && (fuvar[j].fuvarszam < fuvar[i].fuvarszam)) {

                egyfuvar csere = fuvar[i];
                fuvar[i] = fuvar[j];
                fuvar[j] = csere;

            }

        }

    }
    /* csak teszt
    for(i=0; i<db; i++) {

        cout << fuvar[i].nap << " " << fuvar[i].fuvarszam << " " << fuvar[i].tav << endl;

    }
    */

    ///2. feladat
    cout << "2. feladat" << endl;
    cout << "A hét legelső útja: " << fuvar[0].tav << " km volt." << endl;

    ///3. feladat
    cout << "3. feladat" << endl;
    cout << "A hét utolsó útja: " << fuvar[db-1].tav << " km volt." << endl;

    ///4. feladat
    cout << "4. feladat" << endl;
    for(i=1; i<=7; i++) {

        if(!vanfuvar(i)) {

            cout << "A(z) " << i << ". nap szabadnap." << endl;

        }

    }

    ///5. feladat
    cout << "5. feladat" << endl;
    int legtobbfuvar=fuvarszam(1);
    int legtobbfuvarnapja=1;
    for(i=2; i<=7; i++) {

        if(fuvarszam(i)>legtobbfuvar) {

            legtobbfuvarnapja=i;

        }

    }
    cout << "A legtöbb fuvar a " << legtobbfuvarnapja << ". napon volt." << endl;

    ///6. feladat
    cout << "6. feladat" << endl;
    cout << "Az egyers napokon megtett út:" << endl;
    for(i=1; i<=7; i++) {

        cout << i << ". nap: " << tavolsag(i) << " km" << endl;

    }

    ///7. feladat
    cout << "6. feladat" << endl;
    cout << "Adjon meg egy távolságot: ";
    int tav;
    cin >> tav;
    cout << "A díjazás ezért a távolságért: " << dijazas(tav) << " Ft volt." << endl;

    ///8. feladat
    cout << "8. feladat" << endl;
    int fizetes=0; ///9. feladathoz
    ofstream ki;
    ki.open("dijazas.txt");
    if(ki.fail()) {

        cout << "A fájl nem nyitható meg.";
        cin.get();
        exit(-1);
    }

    for(int i=0; i<db; i++) {

       ki << fuvar[i].nap << ". nap " << fuvar[i].fuvarszam << ". út " << dijazas(fuvar[i].tav) << " Ft" << endl;
       fizetes+=dijazas(fuvar[i].tav);
    }

    ki.close();
    cout << "A fájl kiírása sikerült.";
    ///9. feladat
    cout << "9. feladat" << endl;
    cout << "A futár a heti munkájáért: " << fizetes << " Ft-ot kapott." << endl;

    cin.get();
    return 0;
}

///függvények definíciója
bool vanfuvar(int nap){

    int i=0;
    while(fuvar[i].nap!=nap && i<db) {

        i++;

    }
    if(i<db) return true;
    else return false;
}


int fuvarszam(int nap){
///ez akkor is jó, ha nincs sorbarendezés
    int osszes=0;
    for(int i=0; i<db; i++) {

        if(fuvar[i].nap==nap) osszes++;

    }
    return osszes;
}

int tavolsag(int nap){
///ez akkor is jó, ha nincs sorbarendezés
    int osszes=0;
    for(int i=0; i<db; i++) {

        if(fuvar[i].nap==nap) osszes+=fuvar[i].tav;

    }
    return osszes;
}

int dijazas(int tavolsag) {

    if(tavolsag>=1 && tavolsag<=2) return 500;
    else if(tavolsag>=3 && tavolsag<=5) return 700;
    else if(tavolsag>=6 && tavolsag<=10) return 900;
    else if(tavolsag>=11 && tavolsag<=20) return 1400;
    else return 2000;

}
