﻿#include <iostream>
#include <cstdlib>
#include <fstream>
#include <cmath> ///A maximum meghatározásához

using namespace std;

int pontok[2500][3];
int keretes[3136][3];
bool vanszin(int R, int G, int B);
int szinszam(int R, int G, int B);

int main()
{
    setlocale(LC_ALL, "hun");
    ///1. feladat
    cout << "1. feladat: Beolvasás " << endl;
    ifstream be;
    be.open("kep.txt");
    if(be.fail()){
        cout << "A fájl olvasása sikertelen";
        cin.get();
        exit(-1);
    }
    for(int i=0; i<2500; i++){
        for(int j=0; j<3; j++){
            be >> pontok[i][j];
        }
    }
    be.close();
    cout << "A beolvasás sikeres." << endl;

    ///2. feladat
    cout << "2. feladat: Adjon meg egy RGB kódot: ";
    int R,G,B;
    cin >> R >> G >> B;
    if(vanszin(R,G,B)) cout << "Van ilyen szín." << endl;
    else cout << "nincs ilyen szín." << endl;

    ///3. feladat
    cout << "3. feladat" << endl;
    ///A 35. sor 8. képpont: pontok[1757]
    int db35=0, db8=0;
    int i=7;
    ///8. oszlopban
    while(i<2500){
        if(pontok[i][0]==pontok[1757][0] && pontok[i][1]==pontok[1757][1] && pontok[i][2]==pontok[1757][2]) db8++;
        i+=50;
    }
    ///35. sorban
    for(i=1749;i<1799; i++) {
       if(pontok[i][0]==pontok[1757][0] && pontok[i][1]==pontok[1757][1] && pontok[i][2]==pontok[1757][2]) db35++;
    }
    cout << "35. sor 8. képpontjának színe " << db35 << " esetben szerepel a 35. sorban és " << db8 << " esetben a 8. oszlopban." << endl;  ///a pontok[1757] kétszer szerepel
    ///4. feladat
    cout << "4. feladat" << endl;
    int voros=szinszam(255,0,0);
    int zold=szinszam(0,255,0);
    int kek=szinszam(0,0,255);

    int legtobb=max(max(voros,zold),kek);
    if(legtobb==voros) cout << "A vörösbõl van a legtöbb." << endl;
    else if(legtobb==zold) cout << "A zöldbõl van a legtöbb." << endl;
    else cout << "A kékbõl van a legtöbb." << endl;

    ///5. feladat
    cout << "5. feladat: keret" << endl;
    int fekete[1][3];
    fekete[0][0]=0;
    fekete[0][1]=0;
    fekete[0][2]=0;

    for(int i=0;i<=167;i++){

            keretes[i][0]=fekete[0][0];
            keretes[i][1]=fekete[0][1];
            keretes[i][2]=fekete[0][2];
    }
    int j=0;
    for(int i=168;i<=2968;i++){

            if(i%56==0 || i%56==1  || i%56==2  || i%56==53  || i%56==54  || i%56==55 ) {
                keretes[i][0]=fekete[0][0];
                keretes[i][1]=fekete[0][1];
                keretes[i][2]=fekete[0][2];
            }else{
                keretes[i][0]=pontok[j][0];
                keretes[i][1]=pontok[j][1];
                keretes[i][2]=pontok[j][2];
                j++;
            }
    }
    for(int i=2969;i<=3136;i++){

            keretes[i][0]=fekete[0][0];
            keretes[i][1]=fekete[0][1];
            keretes[i][2]=fekete[0][2];
    }
    ///6. feladat
    cout << "6. feladat" << endl;
    ofstream ki;
    ki.open("keretes.txt");
    if(ki.fail()){
        cout << "A fájl olvasása sikertelen";
        cin.get();
        exit(-1);
    }
    for(int i=0;i<3136;i++){

            ki << keretes[i][0] << " " << keretes[i][1] << " " << keretes[i][2] << endl;

    }

    ki.close();
    cout << "A keretes kép fájlba írása sikerült." << endl;
    /* csak teszt
    for(int i=0;i<3136;i++){
        if(keretes[i][0]==0 && keretes[i][1]==0 && keretes[i][2]==0) cout << "f";
        else if(keretes[i][0]==255 && keretes[i][1]==255 && keretes[i][2]==0) cout << "s";
        else cout << "p";
        if(i%56==55) cout << endl;


    }
    */
    ///7. feladat
    cout << "7. feladat: sárga téglalap" << endl;
    ///megkeressük az elsö sárga pontot
    i=0;
    int elso, utolso;
    while(!(keretes[i][0]==255 && keretes[i][1]==255 && keretes[i][2]==0) && i<3136){
       i++;
    }
    elso=i+1;  ///a számozás 1-töl kezdödjön
    ///megkeressük az utolsó sárga pontot
    i=3135;
    while(!(keretes[i][0]==255 && keretes[i][1]==255 && keretes[i][2]==0) && i<3136){
       i--;
    }

    utolso=i+1; ///a számozás 1-töl kezdödjön

    cout << "Kezd: " << elso/56 << ", ";
    if(elso%56==0) cout << "56" << endl;    ///ha 56. sor, akkor ne 0-t írjon ki
    else cout << elso%56 << endl;

    cout << "Vége: " << utolso/56 << ", ";
    if(utolso%56==0) cout << "56" << endl;  ///ha 56. oszlop, akkor ne 0-t írjon ki
    else cout << utolso%56 << endl;
    cout << "A képpontok száma: " << utolso-elso << endl;
    cin.get();
    return 0;
}

bool vanszin(int R, int G, int B){

    bool van=false;
    int i=0;
    while(!van && i<2500){
        if(pontok[i][0]==R && pontok[i][1]==G && pontok[i][2]==B) van=true;
        i++;
    }
return van;
}

int szinszam(int R, int G, int B) {
    int db=0;
    for(int i=0; i<2500; i++) {
       if(pontok[i][0]==R && pontok[i][1]==G && pontok[i][2]==B) db++;
    }
return db;
}
