Advertisement
Elfik

Matura 2017 - Piksele

Jan 2nd, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. bool loadFile(std::string fileToOpen);
  6. int taskOne();
  7. int taskTwo();
  8. int taskThree();
  9.  
  10. int table[320][200];
  11.  
  12. int main() {
  13.     if (!loadFile("dane.txt")) {
  14.         return 0;
  15.     }
  16.  
  17.     taskOne();
  18.     taskTwo();
  19.     taskThree();
  20.  
  21.     std::cin.get();
  22.  
  23.     return 1;
  24. }
  25.  
  26. bool loadFile(std::string fileToOpen) {
  27.     std::fstream openFile(fileToOpen);
  28.  
  29.     if (!openFile.good())
  30.         return 0;
  31.  
  32.     for (int y = 0; y < 200; y++) {
  33.         for (int x = 0; x < 320; x++) {
  34.             openFile >> table[x][y];
  35.         }
  36.     }
  37.     openFile.close();
  38.  
  39.     return 1;
  40. }
  41.  
  42. int taskOne() {
  43.  
  44.     int maxValue = 0;   // Granica dolna dziedziny
  45.     int minValue = 255; // Granica górna dziedziny
  46.  
  47.     for (int y = 0; y < 200; y++) {
  48.         for (int x = 0; x < 320; x++) {
  49.             if (table[x][y] > maxValue) {
  50.                 maxValue = table[x][y];
  51.             }
  52.             if (table[x][y] < minValue) {
  53.                 minValue = table[x][y];
  54.             }
  55.         }
  56.     }
  57.  
  58.     std::cout << "MinValue: " << minValue << std::endl;
  59.     std::cout << "MaxValue: " << maxValue << std::endl;
  60.  
  61.     return 1;
  62. }
  63.  
  64. int taskTwo() {
  65.     int howManyToErase = 0;
  66.  
  67.     for (int y = 0; y < 200; y++) {
  68.         for (int x = 0; x < 160; x++) {
  69.             if (table[x][y] != table[319 - x][y]) { // Ostatni element tablicy w rzędzie x ma indeks 319
  70.                 howManyToErase++;
  71.                 break;
  72.             }
  73.         }
  74.     }
  75.  
  76.     std::cout << "We need to erase " << howManyToErase << " lines!" << std::endl;
  77.  
  78.     return 1;
  79. }
  80.  
  81. int taskThree() {
  82.     int howManyPixels = 0;
  83.  
  84.     for (int y = 0; y < 200; y++) {
  85.         for (int x = 0; x < 320; x++) {
  86.             if      ((table[x+1][y] - table[x][y] > 128 || table[x+1][y] - table[x][y] < -128) && x != 319) howManyPixels++;
  87.             else if ((table[x-1][y] - table[x][y] > 128 || table[x-1][y] - table[x][y] < -128) && x != 0) howManyPixels++;
  88.             else if ((table[x][y+1] - table[x][y] > 128 || table[x][y+1] - table[x][y] < -128) && y != 199) howManyPixels++;
  89.             else if ((table[x][y-1] - table[x][y] > 128 || table[x][y-1] - table[x][y] < -128) && y != 0) howManyPixels++;
  90.         }
  91.     }
  92.  
  93.     std::cout << "There are " << howManyPixels << " specific Pixels!" << std::endl;
  94.  
  95.     return 1;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement