Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <clocale>
- #include <ctime>
- #include <conio.h>
- // Функция для инициализации массива случайными числами от 1 до 10
- void InitArray(int Array[], int n) {
- for (int i = 0; i < n; i++) {
- Array[i] = rand() % 100;
- }
- }
- /* Функция для печати массива на экран. start - позиция, с которой начинаем печатать,
- length - количество выводимых элементов, начиная с элемента start */
- void PrintArray(int *Array, int start, int length) {
- for (int i = start; i <= length + start - 1; i++) {
- std::cout << Array[i] << "\t";
- }
- std::cout << std::endl;
- }
- int Left(int *Array, int * &LeftArray, int n, int Border) {
- int Counter = 0;
- for (int i = Border - 1; i >= 0; i--) {
- if (Array[i] > Array[Border]) {
- Counter++;
- }
- }
- if (Counter == 0) {
- return Counter;
- }
- LeftArray = new int[Counter];
- int j = 0;
- for (int i = Border - 1; i >= 0; i--) {
- if (Array[i] > Array[Border]) {
- LeftArray[j] = Array[i];
- j++;
- }
- }
- return Counter;
- }
- int Right(int *Array, int * &RightArray, int n, int Border) {
- int Counter = 0;
- for (int i = Border + 1; i < n; i++) {
- if (Array[i] < Array[Border]) {
- Counter++;
- }
- }
- if (Counter == 0) {
- return Counter;
- }
- RightArray = new int[Counter];
- int j = 0;
- for (int i = Border + 1; i < n; i++) {
- if (Array[i] < Array[Border]) {
- RightArray[j] = Array[i];
- j++;
- }
- }
- return Counter;
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- srand(time(0));
- int Border;
- int n;
- int *Array = nullptr;
- int *LeftArray = nullptr;
- int *RightArray = nullptr;
- char Choice[16];
- strcpy_s(Choice, 16, "Yes");
- while (strcmp(Choice, "Yes") == 0) {
- std::cout << "Введите количество элементов: ";
- std::cin >> n;
- Border = n + 1;
- Array = new int[n];
- InitArray(Array, n);
- std::cout << "Исходный массив:" << std::endl;
- PrintArray(Array, 0, n);
- while (Border > n) {
- std::cout << "Введите границу (индекс). Граница не должна превышать количества элемента в массиве: ";
- std::cin >> Border;
- }
- std::cout << "Вы выбрали элемент " << Array[Border] << "." << std::endl;
- int LeftCounter = Left(Array, LeftArray, n, Border);
- std::cout << "Элементы, находящиеся левее границы и больше, чем элемент с индексом границы:" << std::endl;
- PrintArray(LeftArray, 0, LeftCounter);
- int RightCounter = Right(Array, RightArray, n, Border);
- std::cout << "Элементы, находящиеся правее границы и меньше, чем элемент с индексом границы:" << std::endl;
- PrintArray(RightArray, 0, RightCounter);
- delete[] Array;
- delete[] LeftArray;
- delete[] RightArray;
- std::cout << "Еще раз? (Yes / No): ";
- getchar();
- gets_s(Choice, 16);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement