﻿#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <sstream>

using namespace std;

struct egyuzenet{
    int nap, radio;
    string szoveg;
}uzenet[250]; ///11 nap, 20 rádióamatõr

int db; /// a db változó tartalmazza majd az üzenetek számát. itt kell deklarálni, hogy a függvények hozzáférjenek
///függvény deklarációk
int feljegyzesekszama(int nap); ///egy napon lévö feljegyzések száma
string napiuzenet(int nap);     ///egy napon lévö üzenet
bool szame(string);             ///6. feladathoz

int main()
{
    setlocale(LC_ALL,"hun");
    cout << "1. feladat:" << endl;
    ifstream be;
    be.open("veetel.txt");
    if(be.fail()){
        cout << "A fájl megnyitása nem sikerült.";
        cin.get();
        exit(-1);
    }
    int i=0;
    db=0;

    while(!be.eof()){
        string ures="";
        be >> uzenet[i].nap >> uzenet[i].radio;
        getline(be,ures);   ///a sortörést le kell venni
        getline(be,uzenet[i].szoveg);
        i++;
    }

    db=i;

    be.close();
    /*
    for(i=0;i<5;i++){

        cout << uzenet[i].szoveg << endl;
    }
    */

    cout << "2. feladat" << endl;

    cout << "Az elsõ üzenetet a " << uzenet[0].radio << ". számú rádióamatõr rögzítette." << endl;
    cout << "Az utolsó üzenetet a " << uzenet[db-1].radio << ". számú rádióamatõr rögzítette." << endl;

    cout << "3. feladat" << endl;

    for(i=0;i<db;i++){

        if(uzenet[i].szoveg.find("farkas")<90){
        cout << "nap: " << uzenet[i].nap << ". rádióamatõr:  " << uzenet[i].radio << endl;

        }

    }
    cout << "4. feladat" << endl;

    for(i=1;i<12;i++){

        cout << i << ". nap: " << feljegyzesekszama(i) << " rádióamatõr" << endl;

    }

    cout << "5. feladat" << endl;
    ofstream ki;
    ki.open("adaas.txt");
    if(ki.fail()){
        cout << "A fájl megnyitása nem sikerült.";
        cin.get();
        exit(-1);
    }
    for(i=1;i<12;i++){

        ki << i << ". nap: " << endl << napiuzenet(i) << endl;

    }
    ki.close();
    cout << "A fájlba írás sikerült." << endl;


    cout << "7. feladat" << endl;
    cout << "Adjon meg egy napot: ";
    int nap, radios;
    cin >> nap;
    cout << "Adjon meg egy radióamatört: ";
    cin >> radios;
    string sor;

    for(i=0;i<db;i++){

        if(uzenet[i].nap==nap && uzenet[i].radio==radios ){

            sor= uzenet[i].szoveg;
        }

    }
    ///ha van a keresésnek megfelelõ adat
    if(sor.length()>0) {
        string talaltsor, szam1, szam2;
        stringstream szamsor1, szamsor2;
        talaltsor=sor[0];
        if(!szame(talaltsor)) {
        ///Ha a sor nem számmal kezdõdik
            cout << "Nincs információ!";

        } else {
        ///Ha a sor számmal kezdõdik
            bool van=false;
            i=0;
            while(!van && i<90) {
                szamsor1 << sor[i];
                i++;
                if(sor[i]=='/'){ ///addig olvassuk a számot, amíg nem érünk el a "/" jelig

                    van= true;
                }
            }
            if(van) { ///akkor tovább olvassuk
            szam1 = szamsor1.str(); ///szam1 tartalmazza az elsõ számot
            van=false;
            i++;      /// A / jelet átugorjuk
            while(!van && i<90) {
                szamsor2 << sor[i];
                i++;
                if(sor[i]==' '){ ///addig olvassuk a számot, amíg nem érünk el a " " jelig

                    van= true;
                }
            }
            if(van){
                szam2 = szamsor2.str();
            }
            }

         ///meg kell viszgálni, hogy tényleg számot kaptunk-e, mert lehet, hogy 5# szerepel például!

        if(szame(szam1) && szame(szam2) && van) {

            int osszes=0;
            osszes=atoi(szam1.c_str())+atoi(szam2.c_str());
                if(osszes>0 ){

                  cout << "A megfigyelt egyedek száma: " << osszes << endl;
                } else {

                 cout << "Nincs információ!";

                }

            } else {

                cout << "Nincs információ!";
            }

        }

    } else {

        cout << "Nincs ilyen feljegyzés!"; ///Ha nincs a keresésnek megfelelõ adat

    }

    cin.get();
    return 0;
}


int feljegyzesekszama(int nap) {
   int s=0;

   for(int i=0;i<db;i++){

        if(uzenet[i].nap==nap){
        s++;
        }

    }
    return s;

}

string napiuzenet(int nap){

char szoveg[90];

    for(int j=0;j<91;j++){

    szoveg[j]= uzenet[0].szoveg[j];
            for(int i=0; i<db; i++) {
            if(uzenet[i].nap==nap){

               if(uzenet[i].szoveg[j]!='#' && uzenet[i].szoveg[j]!='$') szoveg[j]=uzenet[i].szoveg[j];

            }
        }

    }
    return szoveg;

}
///6. feladathoz
bool szame(string szo){
    bool valasz = true;
    for(unsigned int i=0; i<szo.length(); i++) {

       if(szo[i]<'0' || szo[i]>'9') valasz = false;

    }
    return valasz;

}
