#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;

struct uz{
    int n, r;   // n - nap sorszáma, r - amatőr rádiós azonosítója
    string uzenet;
} adas[220];    //11 nap 20 rádiós, max 11*20=220 adás lehet

int N;  // Fájlból beolvasott sorok száma, azaz az ADAS tömb elemeinek száma

void kiir(int ssz)
{
    cout << "----------------------------------" << endl;
    cout << ssz << ". feladat" << endl;
    cout << "----------------------------------" << endl;
}

void F1()
{
    string enter;

    ifstream fbe;
    fbe.open("veetel.txt");
    int i=0;
    while(!fbe.eof())
    {
        fbe >> adas[i].n;
        fbe >> adas[i].r;

        cout << i << " " << adas[i].n << " " << adas[i].r << endl;

        getline(fbe,enter);     //Muszáj beolvasni egyet a getline-nal, hogy a következő getline a rendes sort olvassa be!!!
        getline(fbe,adas[i].uzenet);
        cout << adas[i].uzenet << endl;

        i++;
    }
    fbe.close();
    N=i-1;      // A szokásos forrásfájlvégi üres sor miatt!!!!
    cout << "Adatok száma: " << N << endl;
}

void F2()
{
    //Egy hülye feladat...
    cout << "Az első üzenet rögzítője: " << adas[0].r << endl;
    cout << "Az utolsó üzenet rögzítője: " << adas[N-1].r << endl;
}

void F3()
{
    string keres="farkas";
    int talal;

    for(int i=0;i<N;i++)    //kiválogatás
    {
        talal=adas[i].uzenet.find("farkas");
        if(talal>=0)
        {
            cout << adas[i].n << ". nap " << adas[i].r << ". rádióamatőr" << endl;
        }
    }
}

void F4()
{
    int napok[11]={0};
    for(int i=0;i<N;i++)    //megszámlálás, egy tipikus feladat (LOTTÓ, stb.)
    {
        napok[adas[i].n-1]++;
    }
    //kiírás
    for(int i=0;i<11;i++)
    {
        cout << i+1 << ". nap: " << napok[i] << " rádióamatőr" << endl;
    }
}

void F5()
{
    string alap="";
    for(int i=0;i<90;i++) alap=alap+'#';   // Létrehozunk egy alap szöveget 90 # karakterből

    string ujuzenet[11];    // Ebben lesznek a helyreállított üzenetek a 11 napra vonatkozóan
    for(int i=0;i<11;i++) ujuzenet[i]=alap; //Kezdetben csupa # karaktert talrtalmaznak, 90 hosszúságban
    for(int i=0;i<N;i++)    //Minden adatot megnézünk
    {
        for(int j=0;j<90;j++)   //Minden eredeti üzenet is 90 karakteres
        {
            if(adas[i].uzenet[j]!='#')  //Ha nem #-t tartalmazó karakternél vagyunk, akkor...
            {
                ujuzenet[adas[i].n-1][j]=adas[i].uzenet[j];   //Az adott napnak megfelelő (adas[i].n-1) új üzenet megkapja az adott
                                                              //eredeti üzenet karakterét! Kihasználjuk, hogy nincs ellentmondás
                                                              //az egyes üzenetek között
            }
        }
    }

    //Kiírás a képernyőre és a fájlba is!
    ofstream fki;
    fki.open("adaas.txt");
    for(int i=0;i<11;i++)
    {
        cout << i+1 << ". nap: " << ujuzenet[i] << endl;
        fki << ujuzenet[i] << endl;
    }
    fki.close();
}

bool szame(string szo)
{
    bool valasz=true;
    for(int i=0;i<szo.length();i++)
    {
        if(szo[i]<'0' || szo[i]>'9') valasz=false;
    }
    return valasz;
}

void F7()
{
    int nap, radios, felnott, kolyok, found;
    string f_temp,k_temp;
    cout << "Adja meg a nap sorszámát! "; cin >> nap;
    cout << "Adja meg a rádióamatőr sorszámát! "; cin >> radios;
    int i=0, p1, p2;
    //KERESÉS
    while(i<N&&!(adas[i].n==nap&&adas[i].r==radios))
    {
        i++;
    }
    if(i<N)
    {
        p1=adas[i].uzenet.find('/');
        f_temp=adas[i].uzenet.substr(0,p1);
        p2=adas[i].uzenet.find(' ');
        k_temp=adas[i].uzenet.substr(p1+1,p2-p1-1);

        if(szame(f_temp)&&szame(k_temp))
        {
            felnott=atoi(f_temp.c_str());
            kolyok=atoi(k_temp.c_str());

            cout << "Megfigyelt egyedek száma: " << felnott+kolyok;
        }
        else
        {
            cout << "Nincs információ";
        }
    }
    else
    {
        cout << "Nincs ilyen feljegyzés";
    }

    cout << endl;
}

int main()
{
    setlocale(LC_ALL, "hun");
    kiir(1);
    F1();
    kiir(2);
    F2();
    kiir(3);
    F3();
    kiir(4);
    F4();
    kiir(5);
    F5();
    kiir(7);
    F7();
    return 0;
}
