Лучше использовать std::vector. Просто вводите числа в промежуточную переменную. После ввода каждого числа проверяете отрицательно ли оно, если нет, то добавляете число в вектор. Если число отрицательное и вектор не нулевого размера, то сортируете вектор с помощью std::sort и выводите вектор на экран. Все.
Вместо вектора можно использовать и "сырые" Си массивы в динамической памяти. Алгоритм тот же, но при добавлении каждого нового числа вам нужно выделить новый массив большего размера, скопировать содержимое старого в новый, старый удалить. Для перевыделения массива можно использовать realloc(), она выполняет все эти операции. Вектор скрывает эти операции от вас и делает все то же самое, но без вашего участия, так же в векторе есть оптимизация, позволяющая делать меньше перевыделений памяти.