Advertisement
avr39ripe

sortArrBtwNegatives

Nov 17th, 2020 (edited)
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. enum idx{first,last};
  5.  
  6. void randomizeArr(int arr[], int arrSize, int minVal, int maxVal)
  7. {
  8.     for (int i{ 0 }; i < arrSize; ++i)
  9.     {
  10.         arr[i] = rand() % (maxVal - minVal) + minVal;
  11.     }
  12. }
  13.  
  14. void printArr(int arr[], int arrSize )
  15. {
  16.     for (int i{ 0 }; i < arrSize; ++i)
  17.     {
  18.         std::cout << arr[i] << ' ';
  19.     }
  20.     std::cout << '\n';
  21. }
  22.  
  23. void findNegatives(int arr[], int arrSize, int arrRes[])
  24. {
  25.     arrRes[idx::first] = -1;
  26.     arrRes[idx::last] = -1;
  27.     bool found{false};
  28.  
  29.     for (int i{ 0 }; i < arrSize; ++i)
  30.     {
  31.         if (arr[i] < 0)
  32.         {
  33.             if (found)
  34.             {
  35.                 arrRes[idx::last] = i;
  36.             }
  37.             else
  38.             {
  39.                 arrRes[idx::first] = i;
  40.                 arrRes[idx::last] = i;
  41.                 found = true;
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47. void sortArr(int arr[], int arrSize, int begin, int end)
  48. {
  49.     int tmp{ 0 };
  50.  
  51.     for (int head{ begin + 1 }; head < end; ++head)
  52.     {
  53.         for (int tail{ end  - 1 }; tail > head; --tail)
  54.         {
  55.             if (arr[tail] < arr[tail - 1])
  56.             {
  57.                 tmp = arr[tail - 1];
  58.                 arr[tail - 1] = arr[tail];
  59.                 arr[tail] = tmp;
  60.             }
  61.         }
  62.     }
  63. }
  64.  
  65. int main()
  66. {
  67.     srand(time(0));
  68.  
  69.     const int minVal{ -20 };
  70.     const int maxVal{ 20 };
  71.  
  72.     const int arrSize{ 10 };
  73.     const int arrResSize{2};
  74.  
  75.     int arr[arrSize];
  76.     int arrRes[arrResSize];
  77.  
  78.     randomizeArr(arr,arrSize, minVal, maxVal);
  79.     std::cout << "Original array: ";
  80.     printArr(arr, arrSize);
  81.     findNegatives(arr, arrSize, arrRes);
  82.     std::cout << "First negative element: " << arr[arrRes[idx::first]] << '\n'
  83.                 << "Last negative element: " << arr[arrRes[idx::last]] << "\n";
  84.     sortArr(arr, arrSize, arrRes[idx::first], arrRes[idx::last]);
  85.     std::cout << "Sorted array: ";
  86.     printArr(arr, arrSize);
  87.  
  88.     return 0;
  89. }
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement