@saragain

Задание создания динамического массива до первого отрицательного числа, как это сделать?

Ввести некоторую последовательность действительных чисел и создать динамический массив из чисел, размещенных до первого отрицательного числа (если отрицательных чисел нет, выбрать все). С помощью функции разместить элементы массива в порядке возрастания значений.

С функцией я разобрался, высмотрел пузырьковый формат сортировки, а вот с частью по поводу отрицательного числа я вообще не могу разобраться.
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Лучше использовать std::vector. Просто вводите числа в промежуточную переменную. После ввода каждого числа проверяете отрицательно ли оно, если нет, то добавляете число в вектор. Если число отрицательное и вектор не нулевого размера, то сортируете вектор с помощью std::sort и выводите вектор на экран. Все.

Вместо вектора можно использовать и "сырые" Си массивы в динамической памяти. Алгоритм тот же, но при добавлении каждого нового числа вам нужно выделить новый массив большего размера, скопировать содержимое старого в новый, старый удалить. Для перевыделения массива можно использовать realloc(), она выполняет все эти операции. Вектор скрывает эти операции от вас и делает все то же самое, но без вашего участия, так же в векторе есть оптимизация, позволяющая делать меньше перевыделений памяти.
Ответ написан
Комментировать
@Urilobus
std::vector<int> nums = {1, 3, 5, -7}; //Заданная последовательность чисел
    int i = 0;
    while ((nums[i] >= 0)&&(i <= nums.size())) //Счётчик положительных элементов
    {
        i++;
    }
    //Создание динамического массива
    int* MyMass;
    MyMass = new int[i];
    //Присваивание элементов новому массиву
    for (int n = 0; n < i; n++)
    {
        MyMass[n] = nums[n];
        std::cout<<MyMass[n]<<"\t";
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы