#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;
string vasarlas[1000];
int db;             ///1. feladat
int vasarlasDB=0;   ///2. feladat
int sorszam, dbszam;///4. feladat
string arucikk;     ///4. feladat



int vasarlas_sorszam(int);
int ertek(int);
int vasarlas_kezdete(int);
int vasarlas_vege(int);
bool benne_van(string termek, string tomb[20]);
int egyvasarlasfizet(int);


int main()
{
    setlocale(LC_ALL,"hun");
    ///1. feladat: fájl beolvasása
    ifstream be;
    be.open("penztar.txt");
    if(be.fail()){
        cout << "A fájl olvasása sikertelen.";
        cin.get();
        exit(-1);
    }
    int i=0;
    while(!be.eof()) {
        getline(be,vasarlas[i]);
        i++;
    }
    be.close();
    db=i;
    ///2. feladat
    for(i=0; i<db; i++){
        if(vasarlas[i]=="F") vasarlasDB++;
    }
    cout << "2. feladat" << endl;
    cout << "A fizetések száma: " << vasarlasDB << endl << endl;
    ///3. feladat
    i=0;
    while(vasarlas[i]!="F"){
        i++;
    }
    cout << "3. feladat" << endl;
    cout << "A elsö vásárló " << i << " db árucikket vásárolt." << endl << endl;
    ///4. feladat
    cout << "4. feladat" << endl;
    cout << "Adja meg a vásárlás sorszámát: ";
    cin >> sorszam;
    cout << "Adja meg az árucikk nevét: ";
    cin.get();
    getline(cin,arucikk);
    cout << "Adja meg a darabszámot: ";
    cin >> dbszam;
    int elso, utolso;
    i=0;
    while(vasarlas[i]!=arucikk && i<db){
        elso=i;
        i++;
    }
    i=db;
    while(vasarlas[i]!=arucikk && i>=0){
        utolso=i;
        i--;
    }
    int vasarlasDbszam=0;
    int j=0;
    int v[1000]; ///ebbe gyüjtjük a vásárlások sorszámát
    for(i=0;i<db;i++){
       if(vasarlas[i]==arucikk) {
            v[j]=vasarlas_sorszam(i);
            j++;

       }
    }
    for(i=0; i<j; i++){
       if(v[i]!=v[i+1]) vasarlasDbszam++ ; ///leszámláljuk a különbözö vásárlások sorszámát
    }
    ///5. feladat
    cout << "5. feladat" << endl;
    cout << "Az elsö vásárlás sorszáma: " << vasarlas_sorszam(elso) << endl;
    cout << "Az utolsó vásárlás sorszáma: " << vasarlas_sorszam(utolso) << endl;
    cout << vasarlasDbszam << " alkalommal vettek belöle."<< endl;

    ///6. feladat
    cout << "6. feladat" << endl;
    cout << dbszam << " darab vételekor fizetendö: " << ertek(dbszam) << endl << endl;

    ///7. feladat
    cout << "7. feladat" << endl;
    string termekek[20];        ///ebbe a tömbbe gyüjtjük az adott vásárlásnál a különbözö termékeket.
    int termekekDB=0;

    j=0;
    i=vasarlas_kezdete(sorszam);
    while(vasarlas[i]!="F" && i<db) {
        if(!benne_van(vasarlas[i],termekek)){
            termekek[j]=vasarlas[i];
            j++;
        }
        i++;
    }
    ///leszámláljuk, hogy az egyes termékekböl hány darabot vettek
    for(int k=0;k<j;k++){
        i=vasarlas_kezdete(sorszam);
        while(vasarlas[i]!="F" && i<db) {
            if(vasarlas[i]==termekek[k]) termekekDB++;
            i++;
        }
        cout << termekekDB << "\t" << termekek[k] << endl;
        termekekDB =0;
    }
    ///8. feladat
    ofstream ki;
    ki.open("osszeg.txt");
    if(ki.fail()){
        cout << "Hiba!";
        cin.get();
        exit(-1);
    }
    for(int l=1;l<=vasarlasDB;l++){
        ki << l << ": " << egyvasarlasfizet(l) << endl;
    }
    ki.close();
    cin.get();
    return 0;
}

int vasarlas_sorszam(int sorSzam){
    ///A függvény megadja, hogy az adott sorszámú vásárlás (a tömb indexe szerint!), hányadik vásárláshoz tartozik
    int i=0;
    int vasarlasSsz=1;
    while(i<sorSzam && i<db) {
        if(vasarlas[i]=="F") vasarlasSsz++;
        i++;
    }
    return vasarlasSsz;

}

int ertek(int darabszam){

    if(darabszam==1) return 500;
    else if(darabszam==2) return 950;
    else if(darabszam==3) return 1350;
    else return 1350+(darabszam-3)*400;

}

int vasarlas_kezdete(int vasarlasSorszama){
    int i=0;
    while(vasarlasSorszama>1){
        if(vasarlas[i]=="F") vasarlasSorszama--;
        i++;
    }
    return i;

}

bool benne_van(string termek, string tomb[20]){
    bool van=false;
    int i=0;
    while(!van && i<20){
        if(tomb[i]==termek) van=true;
        i++;
    }
    return van;
}

int egyvasarlasfizet(int vasarlasSorszama){
 int osszeg=0;
 string termekek[20];        ///ebbe a tömbbe gyüjtjük az adott vásárlásnál a különbözö termékeket.
 int termekekDB[20];
 int i=vasarlas_kezdete(vasarlasSorszama);
 int j=0;
 while(vasarlas[i]!="F" && i<db) {
        if(!benne_van(vasarlas[i],termekek)){
            termekek[j]=vasarlas[i];
            termekekDB[j]=0;
            j++;
        }
        i++;
    }
  for(int k=0;k<j;k++){
        i=vasarlas_kezdete(vasarlasSorszama);
        while(vasarlas[i]!="F" && i<db) {
            if(vasarlas[i]==termekek[k]) termekekDB[k]++;
            i++;
        }
        osszeg+=ertek(termekekDB[k]);

    }
    return osszeg;
}
