1  #include <iostream>
  2  #include <fstream>
  3  
  4  using namespace std;
  5  
  6  struct RGB
  7  {
  8      int R;
  9      int G;
 10      int B;
 11  } kep[50][50];
 12  
 13  void kiir(int ssz)
 14  {
 15      cout << ssz << ".feladat" << endl;
 16  }
 17  
 18  void F1()
 19  {
 20      ifstream be;
 21      be.open("kep.txt");
 22      for(int i=0;i<50;i++)
 23      {
 24          for(int j=0;j<50;j++)
 25          {
 26              be >> kep[i][j].R;
 27              be >> kep[i][j].G;
 28              be >> kep[i][j].B;
 29          }
 30      }
 31      be.close();
 32  }
 33  
 34  void F2()
 35  {
 36      int r,g,b;
 37      cout << "Kérek egy RGB kódot:";
 38      cout << "r="; cin>>r;
 39      cout << "g="; cin>>g;
 40      cout << "b="; cin>>b;
 41      int i=0;
 42      int j=0;
 43      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
 44      {
 45          j=0;
 46          while(j<50&&!(kep[i][j].R==r&&kep[i][j].G==g&&kep[i][j].B==b))
 47          {
 48              j++;
 49          }
 50          i++;
 51      }
 52      if(i<50) cout << "Van ilyen kód!";
 53      else cout << "Nincs ilyen kód!";
 54  
 55      cout << endl;
 56  }
 57  
 58  void F3()
 59  {
 60      int r=kep[34][7].R;
 61      int g=kep[34][7].G;
 62      int b=kep[34][7].B;
 63      int sdb=0,odb=0;
 64      for(int i=0;i<50;i++)
 65      {
 66          if(kep[34][i].R==r&&kep[34][i].G==g&&kep[34][i].B==b) sdb++;
 67      }
 68      for(int i=0;i<50;i++)
 69      {
 70          if(kep[i][7].R==r&&kep[i][7].G==g&&kep[i][7].B==b) odb++;
 71      }
 72      cout << "Sorban: " << sdb << " Oszlopban: " << odb << endl;
 73  }
 74  
 75  void F4()
 76  {
 77      //3 elemű tömb, az egyes színek (V, Z, K) előfordulásának számolására
 78      int szin[3]={0, 0, 0};   //Kevés elem esetén így is adhatunk kezdőértéket a tömbelemeknek
 79      for(int i=0;i<50;i++)
 80      {
 81          for(int j=0;j<50;j++)
 82          {
 83              if(kep[i][j].R==255&&kep[i][j].G==0&&kep[i][j].B==0) szin[0]++;
 84              if(kep[i][j].R==0&&kep[i][j].G==255&&kep[i][j].B==0) szin[1]++;
 85              if(kep[i][j].R==0&&kep[i][j].G==0&&kep[i][j].B==255) szin[2]++;
 86          }
 87      }
 88      int max=0, sorszam;
 89      for(int i=0;i<3;i++)
 90      {
 91          if(szin[i]>max)
 92          {
 93              max=szin[i];
 94              sorszam=i;
 95          }
 96      }
 97      switch(sorszam)
 98      {
 99          case 0: cout << "Leggyakoribb szín: VÖRÖS"; break;
100          case 1: cout << "Leggyakoribb szín: ZÖLD"; break;
101          case 2: cout << "Leggyakoribb szín: KÉK"; break;
102      }
103      cout << endl;
104  }
105  
106  void F5()
107  {
108      for(int i=0;i<50;i++)
109      {
110          //ELSŐ és UTOLSÓ HÁROM SOR átszínezése
111          kep[0][i].R=0;  kep[0][i].G=0;  kep[0][i].B=0;
112          kep[1][i].R=0;  kep[1][i].G=0;  kep[1][i].B=0;
113          kep[2][i].R=0;  kep[2][i].G=0;  kep[2][i].B=0;
114          kep[47][i].R=0; kep[47][i].G=0; kep[47][i].B=0;
115          kep[48][i].R=0; kep[48][i].G=0; kep[48][i].B=0;
116          kep[49][i].R=0; kep[49][i].G=0; kep[49][i].B=0;
117          //ELSŐ és UTOLSÓ HÁROM OSZLOP átszínezése
118          kep[i][0].R=0;  kep[i][0].G=0;  kep[i][0].B=0;
119          kep[i][1].R=0;  kep[i][1].G=0;  kep[i][1].B=0;
120          kep[i][2].R=0;  kep[i][2].G=0;  kep[i][2].B=0;
121          kep[i][47].R=0; kep[i][47].G=0; kep[i][47].B=0;
122          kep[i][48].R=0; kep[i][48].G=0; kep[i][48].B=0;
123          kep[i][49].R=0; kep[i][49].G=0; kep[i][49].B=0;
124  
125      }
126  }
127  
128  void F6()
129  {
130      ofstream ki;
131      ki.open("keretes.txt");
132      for(int i=0;i<50;i++)
133      {
134          for(int j=0;j<50;j++)
135          {
136              ki << kep[i][j].R << " ";
137              ki << kep[i][j].G << " ";
138              ki << kep[i][j].B << endl;
139          }
140      }
141      ki.close();
142  }
143  
144  void F7()
145  {
146      int i, j, ki, kj, vi, vj;
147      // ki - sárga terület balfelső sarok i. sora, kj - sárga terület balfelső sarok j. oszlopa  (kezdő koordináták)
148      // vi - sárga terület jobbalsó sarok i. sora, kj - sárga terület jobbalsó sarok j. oszlopa  (vég koordináták)
149  
150      //BAL FELSŐ SAROKBÓL KEZDEM A KERESÉST
151      i=3;
152      while(i<50)
153      {
154          j=3;
155          while(j<50&&!(kep[i][j].R==255&&kep[i][j].G==255&&kep[i][j].B==0))
156          {
157              j++;
158          }
159          if(j<50)
160          {
161              cout << "Kezd: " << i << ", " << j << endl;
162              ki=i; kj=j;
163              i=50;
164          }
165          i++;
166      }
167  
168      //JOBB ALSÓ SAROKBÓL KEZDEM A KERESÉST
169      i=46;
170      while(i>0)
171      {
172          j=46;
173          while(j>0&&!(kep[i][j].R==255&&kep[i][j].G==255&&kep[i][j].B==0))
174          {
175              j--;
176          }
177          if(j>0)
178          {
179              cout << "Vége: " << i << ", " << j << endl;
180              vi=i; vj=j;
181              i=0;
182          }
183          i--;
184      }
185      cout << "Képpontok száma: " << (vi-ki+1)*(vj-kj+1) << endl;
186  }
187  
188  int main()
189  {
190      setlocale(LC_ALL,"hun");
191      kiir(1);
192      F1();
193      kiir(2);
194      F2();
195      kiir(3);
196      F3();
197      kiir(4);
198      F4();
199      kiir(5);
200      F5();
201      kiir(6);
202      F6();
203      kiir(7);
204      F7();
205      return 0;
206  }