Advertisement
gasaichan

Lab6_Var16

Nov 12th, 2017
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <clocale>
  3. #include <ctime>
  4. #include <conio.h>
  5.  
  6. // Функция для инициализации массива случайными числами от 1 до 10
  7. void InitArray(int Array[], int n) {
  8.     for (int i = 0; i < n; i++) {
  9.         Array[i] = rand() % 100;
  10.     }
  11. }
  12.  
  13. /* Функция для печати массива на экран. start - позиция, с которой начинаем печатать,
  14. length - количество выводимых элементов, начиная с элемента start */
  15. void PrintArray(int *Array, int start, int length) {
  16.     for (int i = start; i <= length + start - 1; i++) {
  17.         std::cout << Array[i] << "\t";
  18.     }
  19.     std::cout << std::endl;
  20. }
  21.  
  22. int Left(int *Array, int * &LeftArray, int n, int Border) {
  23.     int Counter = 0;
  24.     for (int i = Border - 1; i >= 0; i--) {
  25.         if (Array[i] > Array[Border]) {
  26.             Counter++;
  27.         }
  28.     }
  29.     if (Counter == 0) {
  30.         return Counter;
  31.     }
  32.     LeftArray = new int[Counter];
  33.     int j = 0;
  34.     for (int i = Border - 1; i >= 0; i--) {
  35.         if (Array[i] > Array[Border]) {
  36.             LeftArray[j] = Array[i];
  37.             j++;
  38.         }
  39.     }
  40.     return Counter;
  41. }
  42.  
  43. int Right(int *Array, int * &RightArray, int n, int Border) {
  44.     int Counter = 0;
  45.     for (int i = Border + 1; i < n; i++) {
  46.         if (Array[i] < Array[Border]) {
  47.             Counter++;
  48.         }
  49.     }
  50.     if (Counter == 0) {
  51.         return Counter;
  52.     }
  53.     RightArray = new int[Counter];
  54.     int j = 0;
  55.     for (int i = Border + 1; i < n; i++) {
  56.         if (Array[i] < Array[Border]) {
  57.             RightArray[j] = Array[i];
  58.             j++;
  59.         }
  60.     }
  61.     return Counter;
  62. }
  63.  
  64. int main() {
  65.     setlocale(LC_ALL, "Russian");
  66.     srand(time(0));
  67.  
  68.     int Border;
  69.     int n;
  70.     int *Array = nullptr;
  71.     int *LeftArray = nullptr;
  72.     int *RightArray = nullptr;
  73.  
  74.     char Choice[16];
  75.     strcpy_s(Choice, 16, "Yes");
  76.    
  77.     while (strcmp(Choice, "Yes") == 0) {
  78.         std::cout << "Введите количество элементов: ";
  79.         std::cin >> n;
  80.         Border = n + 1;
  81.  
  82.         Array = new int[n];
  83.         InitArray(Array, n);
  84.  
  85.         std::cout << "Исходный массив:" << std::endl;
  86.         PrintArray(Array, 0, n);
  87.  
  88.         while (Border > n) {
  89.             std::cout << "Введите границу (индекс). Граница не должна превышать количества элемента в массиве: ";
  90.             std::cin >> Border;
  91.         }
  92.  
  93.         std::cout << "Вы выбрали элемент " << Array[Border] << "." << std::endl;
  94.        
  95.         int LeftCounter = Left(Array, LeftArray, n, Border);
  96.  
  97.         std::cout << "Элементы, находящиеся левее границы и больше, чем элемент с индексом границы:" << std::endl;
  98.         PrintArray(LeftArray, 0, LeftCounter);
  99.  
  100.         int RightCounter = Right(Array, RightArray, n, Border);
  101.  
  102.         std::cout << "Элементы, находящиеся правее границы и меньше, чем элемент с индексом границы:" << std::endl;
  103.         PrintArray(RightArray, 0, RightCounter);
  104.  
  105.         delete[] Array;
  106.         delete[] LeftArray;
  107.         delete[] RightArray;
  108.  
  109.         std::cout << "Еще раз? (Yes / No): ";
  110.         getchar();
  111.         gets_s(Choice, 16);
  112.        
  113.     }
  114.  
  115.  
  116.  
  117.     return 1;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement