|
rgb202305_C++.cpp
|
|
1 #include <iostream>
2 #include <fstream>
3 #include <vector>
4 #include <cstdlib>
5
6 using namespace std;
7
8 struct rgb
9 {
10 int r,g,b;
11 int osszeg;
12 };
13
14 void F1(vector<vector<rgb>> &k)
15 {
16 ifstream fbe;
17 fbe.open("kep.txt");
18 vector<rgb> sor;
19 rgb tmp;
20 while(fbe>>tmp.r&&fbe>>tmp.g&&fbe>>tmp.b)
21 {
22 tmp.osszeg=tmp.r+tmp.g+tmp.b;
23 sor.push_back(tmp);
24
25 if(sor.size()==640)
26 {
27 k.push_back(sor);
28 sor.clear();
29 }
30 }
31 fbe.close();
32 }
33
34 void F2(vector<vector<rgb>> k)
35 {
36 cout << "2. feladat" << endl;
37 int sor,oszlop;
38 cout << "Kérem egy képpont adatait!" << endl;
39 cout << "Sor: ";
40 cin >> sor;
41 cout << "Oszlop: ";
42 cin >> oszlop;
43 rgb RGB;
44 RGB=k[sor][oszlop];
45 printf("A képpont színe RGB(%d,%d,%d)\n",RGB.r,RGB.g,RGB.b);
46 }
47
48 void F3(vector<vector<rgb>> k)
49 {
50 cout << "3. feladat" << endl;
51 int db=0;
52 for(auto sor:k)
53 {
54 for(auto RGB:sor)
55 {
56 if(RGB.osszeg>600) db++;
57 }
58 }
59 printf("A világos képpontok száma: %d\n",db); // 7837
60 }
61
62 void F4(vector<vector<rgb>> k)
63 {
64 cout << "4. feladat" << endl;
65 int minimum=255*3;
66 for(auto sor:k)
67 {
68 for(auto RGB:sor)
69 {
70 if(RGB.osszeg<minimum) minimum=RGB.osszeg;
71 }
72 }
73 printf("A legsötétebb pont RGB összege: %d\n",minimum); // 197
74 cout << "A legsötétebb pixelek színe:" << endl;
75 for(auto sor:k)
76 {
77 for(auto RGB:sor)
78 {
79 if(RGB.osszeg==minimum) printf("RGB(%d,%d,%d)\n",RGB.r,RGB.g,RGB.b);
80 }
81 }
82 // RGB(0,85,112)
83 // RGB(0,86,111)
84 // RGB(0,86,111)
85 }
86
87 bool hatar(vector<vector<rgb>> k,int s,int diff)
88 {
89 vector<rgb> tmp;
90 tmp=k[s]; // s valójában nem a sor száma, hanem az indexe...
91 for(int i=0;i<640-1;i++)
92 {
93 if(abs(tmp[i].b-tmp[i+1].b)>diff)
94 return true;
95 }
96 return false;
97 }
98
99 void F6(vector<vector<rgb>> k)
100 {
101 cout << "6. feladat" << endl;
102 int sor=0;
103 while(!hatar(k,sor,10))
104 {
105 sor++;
106 }
107 printf("A felhő legfelső sora: %d\n",sor+1); // 103
108 sor=360-1;
109 while(!hatar(k,sor,10))
110 {
111 sor--;
112 }
113 printf("A felhő legalsó sora: %d\n",sor+1); // 280
114 }
115
116 int main()
117 {
118 setlocale(LC_ALL,"");
119
120 vector<vector<rgb>> kep;
121
122 F1(kep);
123 F2(kep);
124 F3(kep);
125 F4(kep);
126
127 F6(kep);
128
129 return 0;
130 }