#include <iostream>
#include <fstream>
#include <cstdlib>
#include <sstream>
#include <string>

using namespace std;
int rekeszszam, vasarlasszam;
int csoki[100][3];
int vasarlas[100][9];
int cimletek[]={100, 50, 20, 10, 5, 2, 1};

bool rekesz(int rekeszsorszam) {

    int i=0;
    bool van=false;
    while(i<vasarlasszam && !van) {

        if(rekeszsorszam==vasarlas[i][0]) van=true;
        i++;
    }
    return van;
}

int bedobottpenz(int vasarlas[]) {

    return vasarlas[2]+vasarlas[3]*2+vasarlas[4]*5+vasarlas[5]*10+vasarlas[6]*20+vasarlas[7]*50+vasarlas[8]*100;

}


int main()
{
    setlocale(LC_ALL, "hun");
    //1. feladat
    ifstream be;
    be.open("csoki.txt");
    if(be.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }

    be >> rekeszszam;
    int i=0;
    while(!be.eof()) {

        for(int j=0; j<3; j++) {
            be >> csoki[i][j];
        }
        i++;

    }
    be.close();
    
    ifstream be2;
    be2.open("vasarlas.txt");
    if(be2.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }

    be2 >> vasarlasszam;
    i=0;
    while(!be2.eof()) {

        for(int j=0; j<9; j++) {
            be2 >> vasarlas[i][j];
        }
        i++;

    }
    be2.close();
    
    be2.close();

    //2. feladat
    cout << "2. feladat" << endl;
    int szum=0;
    for(i=0; i<rekeszszam; i++) {

        szum+=csoki[i][1]*csoki[i][2];
    }
    cout << "Az automatában " << szum << " fabatka értékű csoki van." << endl;

    //3. feladat
    cout << "3. feladat" << endl;
    cout << "Az automatából a következő rekeszekből próbáltak csokit vásárolni:" << endl;
    for(i=0; i<rekeszszam; i++) {

        if(rekesz(i)) {
            cout << i << " ";
        }
    }
    cout << endl;
    //4. feladat
    cout << "4. feladat" << endl;
    int penz;
    cout << "Adja meg a pénzösszeget, amiért 7 egyforma csokit szeretne vásárolni: ";
    cin >> penz;
    cout << "A rekeszek, amelyből választhat: " << endl;
    bool van=false;
    for(i=0; i<rekeszszam; i++) {

        if(csoki[i][1]>7 && csoki[i][2]*7<=penz) {
            van=true;
            cout << csoki[i][0] << " ";
        }
    }
    if(!van) cout << "Nincs ilyen rekesz" << endl;
    cout << endl;
    //5. feladat
    cout << "5. feladat" << endl;
    int ssz, csokidb, osszeg, maradek,cimletdb;
    cout << "Adja meg a rekesz sorszámát (1-" << rekeszszam << ") és a darabszámot szóközzel elválasztva: ";
    cin >> ssz >> csokidb;
    osszeg=csokidb*csoki[ssz-1][2];
    i=0;
    cout << csokidb << " db csoki " << csoki[ssz-1][2] << " fabadka/db, összesen " << osszeg << " fabadka" << endl;
    cout << "Szükséges címletek: " << endl;
    while(i<sizeof(cimletek)/sizeof(int) && maradek!=0){

        cimletdb=osszeg/cimletek[i];
        maradek=osszeg%cimletek[i];
        osszeg=maradek;
        if(cimletdb!=0) {

            cout << cimletek[i] << " " << cimletdb << endl;
        }
    i++;
    }

    //6. feladat
    cout << "6. feladat" << endl;
    int db7=csoki[6][1];    //A 7. rekeszben lévő csoki mennyisége
    int ar7=csoki[6][2];    //A 7. rekeszben lévő csoki ára
    int j=1;
    ofstream ki;
    ki.open("rekesz7.txt");
    if(ki.fail()){

        cout << "Hiba a fájl megnyitásakor.";
        cin.get();
        exit(-1);

    }
    for(i=0; i<vasarlasszam; i++) {

        if(vasarlas[i][0]==7) {
            //Ha van a rekeszben elég csoki és a bedobott pénz elég
            if(bedobottpenz(vasarlas[i])>=vasarlas[i][1]*ar7 && vasarlas[i][1]<=db7) {

                ki << j << "\t" << vasarlas[i][1] << endl;
                db7-=vasarlas[i][1];

            }
            //Ha a bedobott pénz elég, de kevés a csoki
            else if(bedobottpenz(vasarlas[i])>=vasarlas[i][1]*ar7 && vasarlas[i][1]>db7) {

                ki << j << "\t" << "Nincs elég csoki a rekeszben." << endl;

            }
            else if(bedobottpenz(vasarlas[i])<vasarlas[i][1]*ar7 && vasarlas[i][1]<=db7) {

                ki << j << "\t" << "Kevés pénzt dobott be." << endl;

            }
            else {

                ki << j << "\t" << "Kevés pénzt dobott be és nincs elég csoki." << endl;

            }

        }
        j++;
    }

    ki.close();
    cout << "A fájlba írás kész.";
    cin.get();
    return 0;
}
