Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
#1

Динамические массивы - C++

24.11.2011, 18:56. Просмотров 558. Ответов 4
Метки нет (Все метки)

Здравствуйте. Задание следующее: Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. Добавить после каждого отрицательного элемента массива его модуль. Вся загвоздка заключается в том, что нужно оперировать всё тем же массивом. Объявлять второй массив и копировать в него элементы нельзя. То есть вот так нельзя:

Не по теме:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int i,n,el,h=0,d=0;
    cout<<"  Enter num of array: ";
    cin>>n;
    int m=n*2;
    int *a=new int [n];
     int *b=new int [m];
    cout<<"  Array: ";
    randomize();
    for(i=0;i<n;i++) { a[i]=rand()%20-10; cout<<a[i]<<" "; }
    cout<<endl;
 
     for(i=0;i<n;i++)
     {
      if(a[i]>=0)
      {
       b[i+h]=a[i];
       d++;
      }
     else {
     b[i+h]=a[i];
     b[i+1+h]=abs(a[i]);
     h++;
     d=d+2;
     }
         }
    cout<<"         ";
     for(i=0;i<d;i++) { cout<<b[i]<<" "; }
    getch();



В итоге дальше вывода сгенерированного массива сдвинуться не могу никак. Возможно ли вообще для задания работать только с одним массивом? Помогите пожалуйста с этой возможностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2011, 18:56     Динамические массивы
Посмотрите здесь:

динамические массивы - C++
помогите, пожалуйста, написать код в с++. (пример кода) Дана матрица размера A * B. Вывести ее элементы в следующем порядке: первый...

Динамические Массивы - C++
Выручайте ребята :friends: 1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. ...

Динамические массивы - C++
помогите,пожалуйста,над срочно написать прогу))))буду оч благодарна)))))))) 1. Сформировать динамический одномерный массив, заполнить...

Динамические массивы - C++
Составить программу, в которой 1)организовать ввод матрицы размера nxn из целых чисел; 2)вычислить минимальный элемент побочной...

Динамические массивы - C++
Помогите сделать пожалуйста массивы a и с динамическими, чтобы не переполнять память при сортировке больших чисел. Спасибо заранее. ...

динамические массивы - C++
Задали квадратную матрицу, все элементы которой равны единице. Написать функцию void func (int ** arr, int n), которая заполняет...

Динамические массивы... - C++
Помогите пожалуйста.... Дано матрицу размерностью N * М с произвольных многочисленных элементов. Найти элементы, которые по модулю меньше...

Динамические массивы - C++
Если у меня есть 2 двумерных динамических массива один х1 размерностью m*n, а другой х2 размерностью m*(n+1), то что происходит с ними...

Динамические массивы - C++
1. Заданы два массива А(N) и В(M). Подсчитать в них количество отрицательных элементов и первым на печать вывести массив, имеющий...

Динамические массивы - C++
Помогите сделать задание пожалуйста , люди. Никак не могу понять как это оживить это... Язык: С++ MS VS: Win32 Console...

Динамические массивы - C++
Ребят,дело в том,возник вопрос по применению динамических массивов в программировании.Я так понял,что динамические массивы отличаются от...

Динамические массивы - C++
С использованием динамических массивов, вводя размер массива с клавиатуры. Используя имя массива как указатель, и применяя адресную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
24.11.2011, 19:01     Динамические массивы #2
1. Создай один массив размера n*2.
2. Запиши в первую половину случайные числа.
3. Пройдись по массиву, если найдешь отрицательный элемент то сдвигай оставшуюся часть на 1 символ, и в этот пустой символ вставляй модуль, увеличивая переменную размера массива на единицу.
Bers
Заблокирован
24.11.2011, 19:20     Динамические массивы #3
Цитата Сообщение от lazybiz Посмотреть сообщение
1. Создай один массив размера n*2.
2. Запиши в первую половину случайные числа.
3. Пройдись по массиву, если найдешь отрицательный элемент то сдвигай оставшуюся часть на 1 символ, и в этот пустой символ вставляй модуль, увеличивая переменную размера массива на единицу.
При таком раскладе есть более рациональное решение:
1. Создай один массив размера n*2.
2. Через один элемент запиши случайные числа.

Получится, что-то вроде:

10 00 15 00 -01 00 -45 00 67 00

В общем, половина будит заполнена случайными числами, а рядом с ними - пусто. Нули.

3. Пройдись по массиву, если найдешь отрицательный элемент, то рядом с ним по соседству запиши его модуль.

получится что то вроде:

10 00 15 00 -01 01 -45 45 67 00

Есть ещё более быстрый алгоритм:
Ещё при заполнении массива, если очередной элемент отрицательный - тут же по соседству записывать его модуль. Такой способ будит самым быстрым, но использовать можно только вовремя первичного заполнения массива данными.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
24.11.2011, 19:27     Динамические массивы #4
Цитата Сообщение от Bers Посмотреть сообщение
При таком раскладе есть более рациональное решение:
Я для себя ищу легкие пути, а для других те что посложнее
BIOSonar
2 / 2 / 0
Регистрация: 17.01.2010
Сообщений: 40
24.11.2011, 19:34  [ТС]     Динамические массивы #5
Есть ещё более быстрый алгоритм:Ещё при заполнении массива, если очередной элемент отрицательный - тут же по соседству записывать его модуль. Такой способ будит самым быстрым, но использовать можно только вовремя первичного заполнения массива данными.
А как его реализовать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i,n,el,h=0,d=0;
    cout<<"  Enter num of array: ";
    cin>>n;
    int m=n*2;
    int *a=new int [m];
    cout<<"  Array: ";
    randomize();
    for(i=0;i<n;i++) { a[i]=rand()%20-10;
     if (a[i]<0)
     {
            a[i+1]=abs(a[i]);
            i++; n++;
     }
     cout<<a[i]<<" "; }
    cout<<endl;
Так? Только неправильно работает. Исправьте пожалуйста меня.
Yandex
Объявления
24.11.2011, 19:34     Динамические массивы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru