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  }