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 }