Advertisement
gasaichan

Lab6_Var15

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