﻿#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

struct egyuzenet{

    int ora, perc;
    string telefonszam, szoveg;


}uzenet[100];

int uzenetszam;


void feladatkiiras(char feladat) {

    cout << feladat << ". feladat" << endl;

}

int main()
{
    setlocale(LC_ALL, "hun");
    // 1. feladat
    ifstream be;
    be.open("sms.txt");
    if(be.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }
    be >> uzenetszam;    ///A darabszám beolvasása

    int i=0;

    while(!be.eof()) {
        string sor;
        be >> uzenet[i].ora >> uzenet[i].perc >> uzenet[i].telefonszam; /// beolvassuk az óra, perc és telefonszámotértéket
        getline(be,sor);                                                /// eldobjuk a sorvéget
        getline(be,uzenet[i].szoveg);                                   /// beolvassuk az üzenet szövegét.

        i++;
    }

    be.close();
    /* csak teszt
    for(i=0;i<uzenetszam;i++) {

        cout << uzenet[i].ora << " " << uzenet[i].perc << " " << uzenet[i].telefonszam << " " << uzenet[i].szoveg << endl;


    }
    */
    //2. feladat
    feladatkiiras('2');
    if(uzenetszam<10) cout << uzenet[uzenetszam-1].szoveg << endl;
    cout << uzenet[9].szoveg << endl;

    //3. feladat
    feladatkiiras('3');
    int max=0, min=max;

    for(i=1;i<uzenetszam;i++) {
        if(uzenet[i].szoveg.length()>uzenet[max].szoveg.length()) {

            max=i;

        }
        if(uzenet[i].szoveg.length()<uzenet[min].szoveg.length()) {

            min=i;

        }

    }
    cout << "A leghosszabb üzenet a " << uzenet[max].ora << ":" << uzenet[max].perc << " órakor érkezett a " << uzenet[max].telefonszam << " telefonszámról. Az üzenet: " << uzenet[max].szoveg << endl;
    cout << "A legrövidebb üzenet a " << uzenet[min].ora << ":" << uzenet[min].perc << " órakor érkezett a " << uzenet[min].telefonszam << " telefonszámról. Az üzenet: " << uzenet[min].szoveg << endl;


    //4. feladat
    feladatkiiras('4');
    int s1=0, s2=0, s3=0, s4=0, s5=0;

    for(i=0;i<uzenetszam;i++) {

        if(uzenet[i].szoveg.length()>=1 && uzenet[i].szoveg.length()<=20) s1++;
        if(uzenet[i].szoveg.length()>=21 && uzenet[i].szoveg.length()<=40) s2++;
        if(uzenet[i].szoveg.length()>=41 && uzenet[i].szoveg.length()<=60) s3++;
        if(uzenet[i].szoveg.length()>=61 && uzenet[i].szoveg.length()<=80) s4++;
        if(uzenet[i].szoveg.length()>=81 && uzenet[i].szoveg.length()<=100) s5++;
    }
    cout << "1-20: " << s1 << endl;
    cout << "21-40: " << s2 << endl;
    cout << "41-60: " << s3 << endl;
    cout << "61-80: " << s4 << endl;
    cout << "81-100: " << s5 << endl;

    //5. feladat
    feladatkiiras('5');
    int oradb=1;
    int db=0;
    for(i=1;i<uzenetszam;i++) {

        if(uzenet[i-1].ora==uzenet[i].ora) {

            oradb++;
        }
        else {
            if(oradb>10) db+=oradb-10;
            oradb=1;
        }

    }
    cout << "A szolgáltatótól lekérendõ üzenetek száma: " << db << endl;

    //6. feladat
    feladatkiiras('6');
    i=0;
    while(uzenet[i].telefonszam=="123456789" && i<uzenetszam) {

        i++;
    }
    if(i==uzenetszam) {

        cout << "Nincs elegendõ üzenet" << endl;
    }

    int kezdo=i;

    int szunet=0;

    for(int j=i+1; j<uzenetszam; j++) {

        if(uzenet[j].telefonszam=="123456789") {

            if((uzenet[j].ora*60+uzenet[j].perc)-(uzenet[kezdo].ora*60+uzenet[kezdo].perc)>szunet) {

                szunet=(uzenet[j].ora*60+uzenet[j].perc)-(uzenet[kezdo].ora*60+uzenet[kezdo].perc);

            }
        kezdo=j;
        }

    }
    if(szunet==0) {

         cout << "Nincs elegendõ üzenet" << endl;

    } else {

        cout << "A legnagyobb szünet: " << szunet << " perc" << endl;

    }

    //7. feladat
    feladatkiiras('7');
    cout << "Adja meg az üzenet adatait (óra, perc, telefonszám): ";
    cin >> uzenet[uzenetszam].ora >> uzenet[uzenetszam].perc >> uzenet[uzenetszam].telefonszam;
    cout << "Adja meg az üzenet szövegét: ";
    cin.get();
    getline(cin, uzenet[uzenetszam].szoveg);

    //8. feladat
    for(i=0; i<uzenetszam; i++) {

        for(int j=i+1; j<uzenetszam+1; j++) {


            if(uzenet[i].telefonszam > uzenet[j].telefonszam) {

                egyuzenet csere=uzenet[i];
                uzenet[i]=uzenet[j];
                uzenet[j]=csere;

            }

        }

    }
    feladatkiiras('8');
    ofstream ki;
    ki.open("smski.txt");
    if(ki.fail()) {

        cout << "A fájl nem nyitható meg";
        cin.get();
        exit(-1);
    }
    string ujszam=uzenet[0].telefonszam;
    ki << uzenet[0].telefonszam << endl;
    ki << uzenet[0].ora << ":" << uzenet[0].perc << " " << uzenet[0].szoveg << endl;
    for(i=1; i<uzenetszam; i++) {

        if(uzenet[i].telefonszam!=uzenet[i-1].telefonszam) {

            ki << uzenet[i].telefonszam << endl;

        }
        ki << uzenet[i].ora << ":" << uzenet[i].perc << " " << uzenet[i].szoveg << endl;

    }

    ki.close();
    cout << "Az adatokat az sms.txt fájlba írtuk.";
    cin.get();
    return 0;
}
