#include <iostream>
#include <fstream>

using namespace std;

struct RGB
{
    int R;
    int G;
    int B;
} kep[50][50];

void kiir(int ssz)
{
    cout << ssz << ".feladat" << endl;
}

void F1()
{
    ifstream be;
    be.open("kep.txt");
    for(int i=0;i<50;i++)
    {
        for(int j=0;j<50;j++)
        {
            be >> kep[i][j].R;
            be >> kep[i][j].G;
            be >> kep[i][j].B;
        }
    }
    be.close();
}

void F2()
{
    int r,g,b;
    cout << "Kérek egy RGB kódot:";
    cout << "r="; cin>>r;
    cout << "g="; cin>>g;
    cout << "b="; cin>>b;
    int i=0;
    int j=0;
    while(i<50&&!(kep[i][j].R==r&&kep[i][j].G==g&&kep[i][j].B==b))  //Lineáris keresés mátrixra alkalmazása
    {
        j=0;
        while(j<50&&!(kep[i][j].R==r&&kep[i][j].G==g&&kep[i][j].B==b))
        {
            j++;
        }
        i++;
    }
    if(i<50) cout << "Van ilyen kód!";
    else cout << "Nincs ilyen kód!";

    cout << endl;
}

void F3()
{
    int r=kep[34][7].R;
    int g=kep[34][7].G;
    int b=kep[34][7].B;
    int sdb=0,odb=0;
    for(int i=0;i<50;i++)
    {
        if(kep[34][i].R==r&&kep[34][i].G==g&&kep[34][i].B==b) sdb++;
    }
    for(int i=0;i<50;i++)
    {
        if(kep[i][7].R==r&&kep[i][7].G==g&&kep[i][7].B==b) odb++;
    }
    cout << "Sorban: " << sdb << " Oszlopban: " << odb << endl;
}

void F4()
{
    //3 elemű tömb, az egyes színek (V, Z, K) előfordulásának számolására
    int szin[3]={0, 0, 0};   //Kevés elem esetén így is adhatunk kezdőértéket a tömbelemeknek
    for(int i=0;i<50;i++)
    {
        for(int j=0;j<50;j++)
        {
            if(kep[i][j].R==255&&kep[i][j].G==0&&kep[i][j].B==0) szin[0]++;
            if(kep[i][j].R==0&&kep[i][j].G==255&&kep[i][j].B==0) szin[1]++;
            if(kep[i][j].R==0&&kep[i][j].G==0&&kep[i][j].B==255) szin[2]++;
        }
    }
    int max=0, sorszam;
    for(int i=0;i<3;i++)
    {
        if(szin[i]>max)
        {
            max=szin[i];
            sorszam=i;
        }
    }
    switch(sorszam)
    {
        case 0: cout << "Leggyakoribb szín: VÖRÖS"; break;
        case 1: cout << "Leggyakoribb szín: ZÖLD"; break;
        case 2: cout << "Leggyakoribb szín: KÉK"; break;
    }
    cout << endl;
}

void F5()
{
    for(int i=0;i<50;i++)
    {
        //ELSŐ és UTOLSÓ HÁROM SOR átszínezése
        kep[0][i].R=0;  kep[0][i].G=0;  kep[0][i].B=0;
        kep[1][i].R=0;  kep[1][i].G=0;  kep[1][i].B=0;
        kep[2][i].R=0;  kep[2][i].G=0;  kep[2][i].B=0;
        kep[47][i].R=0; kep[47][i].G=0; kep[47][i].B=0;
        kep[48][i].R=0; kep[48][i].G=0; kep[48][i].B=0;
        kep[49][i].R=0; kep[49][i].G=0; kep[49][i].B=0;
        //ELSŐ és UTOLSÓ HÁROM OSZLOP átszínezése
        kep[i][0].R=0;  kep[i][0].G=0;  kep[i][0].B=0;
        kep[i][1].R=0;  kep[i][1].G=0;  kep[i][1].B=0;
        kep[i][2].R=0;  kep[i][2].G=0;  kep[i][2].B=0;
        kep[i][47].R=0; kep[i][47].G=0; kep[i][47].B=0;
        kep[i][48].R=0; kep[i][48].G=0; kep[i][48].B=0;
        kep[i][49].R=0; kep[i][49].G=0; kep[i][49].B=0;

    }
}

void F6()
{
    ofstream ki;
    ki.open("keretes.txt");
    for(int i=0;i<50;i++)
    {
        for(int j=0;j<50;j++)
        {
            ki << kep[i][j].R << " ";
            ki << kep[i][j].G << " ";
            ki << kep[i][j].B << endl;
        }
    }
    ki.close();
}

void F7()
{
    int i, j, ki, kj, vi, vj;
    // ki - sárga terület balfelső sarok i. sora, kj - sárga terület balfelső sarok j. oszlopa  (kezdő koordináták)
    // vi - sárga terület jobbalsó sarok i. sora, kj - sárga terület jobbalsó sarok j. oszlopa  (vég koordináták)

    //BAL FELSŐ SAROKBÓL KEZDEM A KERESÉST
    i=3;
    while(i<50)
    {
        j=3;
        while(j<50&&!(kep[i][j].R==255&&kep[i][j].G==255&&kep[i][j].B==0))
        {
            j++;
        }
        if(j<50)
        {
            cout << "Kezd: " << i << ", " << j << endl;
            ki=i; kj=j;
            i=50;
        }
        i++;
    }

    //JOBB ALSÓ SAROKBÓL KEZDEM A KERESÉST
    i=46;
    while(i>0)
    {
        j=46;
        while(j>0&&!(kep[i][j].R==255&&kep[i][j].G==255&&kep[i][j].B==0))
        {
            j--;
        }
        if(j>0)
        {
            cout << "Vége: " << i << ", " << j << endl;
            vi=i; vj=j;
            i=0;
        }
        i--;
    }
    cout << "Képpontok száma: " << (vi-ki+1)*(vj-kj+1) << endl;
}

int main()
{
    setlocale(LC_ALL,"hun");
    kiir(1);
    F1();
    kiir(2);
    F2();
    kiir(3);
    F3();
    kiir(4);
    F4();
    kiir(5);
    F5();
    kiir(6);
    F6();
    kiir(7);
    F7();
    return 0;
}
