Advertisement
Guest User

solution

a guest
Apr 24th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. /* --std=c++11 */
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <cstdint>
  5. #include <random>
  6. #include <array>
  7.  
  8. //The solution
  9. void rotate90clockwise(uint32_t* image, int size)
  10. {
  11.     for (int cycle = 0; cycle < size/2; cycle++)
  12.     {
  13.         int lastcol = size - cycle - 1;
  14.         for (int col = cycle; col < lastcol; col++)
  15.         {
  16.             uint32_t tmp = image[cycle*size + col];
  17.             image[cycle*size + col] = image[(size - col - 1)*size + cycle];
  18.             image[(size - col - 1)*size + cycle] = image[lastcol*size + (size - col - 1)];
  19.             image[lastcol*size + (size - col - 1)] = image[col*size + lastcol];
  20.             image[col*size + lastcol] = tmp;
  21.         }
  22.     }
  23. }
  24.  
  25. //To debug
  26. void fillrand(uint32_t* image, int size)
  27. {
  28.     std::seed_seq seed = {1,2,323};
  29.     seed.generate(image, image+size*size);
  30. }
  31.  
  32. void printimage(uint32_t* image, int size)
  33. {
  34.     for (int i = 0; i < size; i++)
  35.     {
  36.         for (int j = 0; j < size; j++)
  37.         {
  38.             std::cout << std::setw(10) << std::hex << image[i*size+j];
  39.         }
  40.         std::cout << std::endl;
  41.     }
  42. }
  43.  
  44. int main()
  45. {
  46.     int N = 3;
  47.     uint32_t* testimg = new uint32_t[N*N];
  48.     fillrand(testimg, N);
  49.     printimage(testimg, N);
  50.     std::cout << "Rotate: \n";
  51.     rotate90clockwise(testimg, N);
  52.     printimage(testimg, N);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement