Удаление нулевых элементов из массива, если большая часть массива состоит из них (больше половины элементов)

Заменить нулями все элементы, которые находятся в ячейках

между минимальным и максимальным элементами (не включая их). Изначально все элементы в массиве различные. Если после данного действия большая часть массива будет содержать нули, то удалить все нулевые элементы из массива (c сохранением порядка следования остальных элементов)

  int main()
    {
        setlocale(LC_ALL, "ru");
        system("color 70");
        srand(time(NULL));
        int size = value();   //Функция для ввода размера массива
        int* array = new int[size];
        std::cout << "Исходный массив: " << std::endl;
        for (int i = 0; i < size; i++)
        {
            array[i] = rand() % 100;
            std::cout << array[i] << " ";
        }
    
        int x = 0, y = 0;
        int max = array[0];
        for (int i = 0; i < size; ++i) 
        {
            if (array[i] > max) 
            {
                max = array[i];
                x = i;
            }
        }
    
        int min = array[0];
        for (int i = 0; i < size; ++i)
        {
            if (array[i] < min) 
            {
                min = array[i];
                y = i;
            }
        }
        
        if (x > y)
        {
            for (x; x > y; x--)
                array[x - 1] = 0;
            array[y] = min;
        }
                   
        else
        {
            for (y; y > x; y--)
                array[y - 1] = 0;
            array[x] = max;
        }
    
        
        std::cout << "Полученный массив: " << std::endl;
        for (int i = 0; i < size; i++)
        {
            std::cout << array[i] << " ";
        }
        std::cout << "\n\n\n";
        system("pause");
        return 0;
    }

Основную часть задачи я сделал, пытался удалить нули, если они занимают большинство массива, но так и не вышло. Как это реализовать?


Ответы (0 шт):