#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

string lovesek[100];
int db;

int loertek(string loves);

ifstream be;
ofstream ki;

int main()
{
    setlocale(LC_ALL,"hun");

    ///1. feladat
    cout << "1. feladat: beolvasás" << endl;
    be.open("verseny.txt");
    if(be.fail()) {

        cout << "A fájl nem nyítható meg!";
        cin.get();
        exit(-1);

    }
    be >> db;
    int i=0;
    while(be>>lovesek[i]){
        i++;
    }
    be.close();
    /*
    for(int i=0;i<db;i++) {
        cout << lovesek[i] << endl;
    }
    */
    ///2. feladat
    cout << "2. feladat: Versenyzök akiknek van egymás utáni találata" << endl;
    for(int i=0; i<db; i++){
        if(lovesek[i].find("++")!=lovesek[i].npos) cout << i+1 << endl;
    }
    ///3. feladat
    cout << "3. feladat: Legtöbb lövést leadó versenyzö: " ;
    unsigned int legtobbLoves=lovesek[0].length();
    unsigned int legtobbIndex=0;
    for(int i=1; i<db; i++){
        if(lovesek[i].length()>legtobbLoves) {
            legtobbLoves=lovesek[i].length();
            legtobbIndex=i;
        }
    }
    cout << legtobbIndex+1 << endl;
    ///5. feladat
    cout << "5. feladat: Adja meg a versenyzö rajtszámát (1-"<< db << "): " ;
    int rajtszam, talalatSzam=0;
    cin >> rajtszam;
    int index=rajtszam-1, szamlalo=1, maxsorozat=0;
    cout << "5a. feladat: Célt erö lövések: ";
    for(unsigned int i=0; i<lovesek[index].length(); i++){
        if(lovesek[index][i]=='+') {
            cout << i+1 << " ";
            talalatSzam++;
        }
        if(lovesek[index][i]=='+' && lovesek[index][i+1]=='+'){
            szamlalo++;

        }
        if(lovesek[index][i]=='+' && lovesek[index][i]!=lovesek[index][i+1]){

            if(szamlalo>maxsorozat) maxsorozat=szamlalo;
            szamlalo=1;
        }
    }
    cout << endl;
    cout << "5b. feladat: Az eltalált korongok száma: " << talalatSzam << endl;
    cout << "5c. feladat: A leghossszabb hibátlan sorozat hossza: "  << maxsorozat << endl;
    cout << "5b. feladat: A versenyzö pontszáma: " << loertek(lovesek[index]) << endl;

    ///6. feladat
    cout << "6. feladat: Végeredmény kiírása fájlba. " << endl;
    ///kigyüjtjük egy struct-ba az eredmenyeket
    struct eredmeny{
        int rajtszam, pontszam;
    }egyeredmeny[db];

    for(int i=0; i<db; i++){
      egyeredmeny[i].rajtszam=i+1;
      egyeredmeny[i].pontszam=loertek(lovesek[i]);
    }
    ///pontszam szerint sorba rendezzük
    for(int i=0; i<db-1; i++){
        for(int j=i+1; j<db; j++){
            if(egyeredmeny[j].pontszam > egyeredmeny[i].pontszam){
                eredmeny csere=egyeredmeny[j];
                egyeredmeny[j]=egyeredmeny[i];
                egyeredmeny[i]=csere;
            }

        }
    }
    int helyezes=1;

    ki.open("sorrend.txt");
    if(ki.fail()) {

        cout << "A fájl nem nyítható meg!";
        cin.get();
        exit(-1);

    }
    for(int i=0; i<db; i++){
        ki << helyezes << "\t";
        if(egyeredmeny[i+1].pontszam!=egyeredmeny[i].pontszam) helyezes++;

        ki << egyeredmeny[i].rajtszam << "\t" << egyeredmeny[i].pontszam << endl;
    }
    ki.close();
    cout << "A fájlba írás sikerült. " << endl;
    cin.get();

    return 0;
}

///4. feladat: függvény
int loertek(string sor){
    int aktpont=20;
    int ertek=0;
    for(unsigned int i=0; i<sor.length(); i++){
        if(aktpont>0 && sor[i]=='-') aktpont--;
        else ertek+=aktpont;
    }
return ertek;
}
