#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <cmath>
#include <string>
#include <cstring>
#include <stdlib.h>

#define N 15  //sor
#define M 20   //oszlop

using namespace std;

string sor[N];
string kat[N];
int m[5];  //money kategóriánként

void F1()
{
    ifstream fsor;
    fsor.open("foglaltsag.txt");
    ifstream ksor;
    ksor.open("kategoria.txt");
    for(int i=0;i<N;i++)
    {
        fsor >> sor[i];
        ksor >> kat[i];
    }
    ksor.close();
    fsor.close();
    for(int i=0;i<N;i++) cout << sor[i] << endl;
    cout << endl;
    for(int i=0;i<N;i++) cout << kat[i] << endl;
    cout << endl;
}

void F2()
{
    int s, o;
    cout << "Sor száma: ";
    cin >> s;
    cout << "Szék száma: ";
    cin >> o;
    if(sor[s-1][o-1]=='x') cout << "Foglalt";
    else cout << "Szabad";
    cout << endl;
}
void F3()
{
    float e=0;      //Az e float típusú legyen, hogy a törtrésze se vesszen el!
    for(int s=0;s<N;s++)
    {
        for(int o=0;o<M;o++)
        {
            if(sor[s][o]=='x') e++;
        }
    }
    cout << "Eladtak " << e << " db jegyet, ez ennyi: ";
    cout << round(e/(15*20)*100) << "%-a." << endl;
//round a cmath include fájlban található, egészre kerekít
}

void F4()
{
    int kategoria;
    for(int i=0;i<5;i++) m[i]=0;

    for(int s=0;s<N;s++)
    {
        for(int o=0;o<M;o++)
        {
            kategoria=int(kat[s][o])-49;

//FONTOS: az int() itt, mint függvény szerepel. kat[s][o] egy karakter, melynek ASCII-kódját adja vissza az int(), az '1' karakter ASCII kódja 49, így ezt le kell vonni, hogy az m tömböt indexelhessük, (2 - 50, 3-51,...stb.)

            if(sor[s][o]=='x') m[kategoria]++;
        }
    }

    for(int i=0;i<5;i++)
    {
        cout << i+1 << ": " << m[i] << endl;
    }

    kategoria=1;
    int max=m[0];  //maximum eladás db, az index pedig
                   //a kategóriát mondja meg!!!
    for(int i=1;i<5;i++)
    {
        if(m[i]>max)
        {
            max=m[i];kategoria=i+1;
        }
    }
    cout << "A legtöbb jegyet a(z) " << kategoria << ". árkategóriában értékesítették." << endl;
}

void F5()
{
    int bev=0;
    for(int i=0;i<5;i++)
    {
        if(i==0) bev=bev+m[0]*5000;   //1 kategória darabszáma*5000
        if(i==1) bev=bev+m[1]*4000;   //2 kategória darabszáma*4000
        if(i==2) bev=bev+m[2]*3000;   //3 kategória darabszáma*3000
        if(i==3) bev=bev+m[3]*2000;   //4 kategória darabszáma*2000
        if(i==4) bev=bev+m[4]*1500;   //5 kategória darabszáma*1500
    }
    cout << "A színház bevétele: " << bev << " Ft" << endl;
}

void F6()
{
    int u_db=0;
    for(int s=0;s<N;s++)
    {
        for(int o=0;o<M;o++)
        {
            //balszél üres, de mellette foglalt
            if(o==0&&sor[s][o]=='o'&&sor[s][o+1]=='x') u_db++;
            //soron belül van egy üres
            if(o>0&&o<M&&sor[s][o]=='o'&&sor[s][o-1]=='x'&&sor[s][o+1]=='x') u_db++;
            //jobbszél üres, de előtte foglalt
            if(o==M-1&&sor[s][o]=='o'&&sor[s][o-1]=='x') u_db++;
        }
    }
    cout << "Egyedülálló helyek száma: " << u_db << endl;
}

void F7()
{
    ofstream ki;
    ki.open("szabad.txt");
    for(int s=0;s<N;s++)
    {
        for(int o=0;o<M;o++)
        {
            if(sor[s][o]=='o') sor[s][o]=kat[s][o];
            ki << sor[s][o];
        }
        ki << endl;
    }
    ki.close();
}

int main()
{
    setlocale(LC_ALL, "hun");
    cout << "1. feladat" << endl;
    F1();
    cout << "2. feladat" << endl;
    F2();
    cout << "3. feladat" << endl;
    F3();
    cout << "4. feladat" << endl;
    F4();
    cout << "5. feladat" << endl;
    F5();
    cout << "6. feladat" << endl;
    F6();
    cout << "7. feladat" << endl;
    F7();
    return 0;
}
