#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

struct telek{
    int oldal;
    int szel;
    char szin;
}tomb[1000];

int main()
{
    setlocale(LC_ALL,"hun");
    ///1. feladat
    ifstream be;
    be.open("kerites.txt");
    if(be.fail()){
        cout << "Hiba";
        cin.get();
        exit(-1);
    }

    int i=0;
    while(be  >> tomb[i].oldal >> tomb[i].szel >> tomb[i].szin){

        i++;
    }
    be.close();
    int db=i;
    ///2. feladat
    cout << "2. feladat:" << endl;
    cout << "Az eladott telkek száma: " << db << endl;
    ///3. feladat
    cout << "3. feladat:" << endl;
    int prt=0;
    for(int i=0; i<db; i++){
        if(tomb[i].oldal) prt++;

    }
    if(tomb[db-1].oldal) cout << "A páratlan oldalon adták el az utolsó telket." << endl << "Az utolsó telek házszáma: " << prt*2-1 << endl;
    if(!tomb[db-1].oldal) cout << "A páros oldalon adták el az utolsó telket." << endl << "Az utolsó telek házszáma: " << (db-prt)*2 << endl;
    ///4. feladat
    cout << "4. feladat:" << endl;
    //kigyujtjuk a paratlan oldal szineit
    char prtSzin[db], prsSzin[db];;
    int j=0;
    for(int i=0; i<db; i++){
        if(tomb[i].oldal) {
            prtSzin[j]=tomb[i].szin;
            j++;
        }
    }
    i=0;
    bool van=false;
    while(!van){
        if(prtSzin[i]!='#' && prtSzin[i]!=':' && prtSzin[i]==prtSzin[i+1]) van=true;
        i++;
    }
    cout << "A szomszédossal egyezik a kerítés szine: "  << i*2-1 << endl;
    ///5. feladat
    cout << "5. feladat:" << endl;
    prtSzin[db], prsSzin[db];
    j=0;
    int k=0;
    for(int i=0; i<db; i++){
        if(tomb[i].oldal) {
            prtSzin[j]=tomb[i].szin;
            j++;
        }else{
            prsSzin[k]=tomb[i].szin;
            k++;
        }
    }

    int hazszam;
    cout << "Adjon meg egy házszámot: ";
    cin >> hazszam;
    int melyikoldal=hazszam%2;

    char szinezes[3];
    if(melyikoldal) { //ha paratlan;
            if(hazszam==1){
                    szinezes[0]=' ';
                    szinezes[1]=prtSzin[(hazszam-1)/2];
                    szinezes[2]=prtSzin[(hazszam-1)/2+1];
            }

            else {
                    szinezes[0]=prtSzin[(hazszam-1)/2-1];
                    szinezes[1]=prtSzin[(hazszam-1)/2];
                    szinezes[2]=prtSzin[(hazszam-1)/2+1];

            }

    }else{
            if(hazszam==2){
                    szinezes[0]=' ';
                    szinezes[1]=prsSzin[(hazszam-1)/2];
                    szinezes[2]=prsSzin[(hazszam-1)/2+1];
            }

            else {
                    szinezes[0]=prsSzin[(hazszam-1)/2-1];
                    szinezes[1]=prsSzin[(hazszam-1)/2];
                    szinezes[2]=prsSzin[(hazszam-1)/2+1];

            }

    }
    string szinek="ABCDEFGHIJKLMNOPQRSTUVYX";
    cout << "A kerités állapota: " << szinezes[1] << endl;
    i=0;
    while(szinek[i]==szinezes[0] || szinek[i]==szinezes[1] || szinek[i]==szinezes[2]){
        i++;
    }
    cout << "Egy lehetséges szinezés: " << szinek[i] << endl;
    ///6.feladat
    ofstream ki;
    ki.open("utcakép.txt");
    if(ki.fail()){
        ki << "Hiba";
        cin.get();
        exit(-1);
    }
    for(int i=0; i<db; i++){
        if(tomb[i].oldal){
            for(int j=1;j<=tomb[i].szel; j++) ki << tomb[i].szin;
        }
    }
    ki << endl;
    prt=-1;
    for(int i=0; i<db; i++){
        if(tomb[i].oldal){
            prt+=2;
            ki << prt;
            if(prt<10) for(int j=1;j<tomb[i].szel; j++) ki << " ";
            else if(prt>=10 && prt<100) for(int j=1;j<tomb[i].szel-1; j++) ki << " ";
            else for(int j=1;j<tomb[i].szel-2; j++) ki << " ";
        }
    }
    ki.close();
    return 0;
}
