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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
#1

Динамическое распределение памяти - C++

15.03.2009, 10:22. Просмотров 2036. Ответов 8
Метки нет (Все метки)

помогите пожалуйста поправить код!в массиве по заданному индексу удалить элемент
(не работает !)
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
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\
int* AddxElement(int *p, int &n)
{
    int x=0;
    int *tmp = new int[--n];
    if(tmp == NULL) 
    {
        cout << "Memory error!!!";
        return NULL;
    }
    cout<<" x=";cin>>x;\\номер удаляемого элемента
    for(int i=0;i<n;i++)
    {
    if(i==x-1||i>x-1)p[i]=p[i+1];\\смещаем элементы влево
    for(i=0;i<n-1;i++)
    { 
        tmp[i] = p[i];\\присваиваем на один меньше
    } 
 
    }
    
    if(p != NULL) delete[] p;
 
    return tmp;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2009, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическое распределение памяти (C++):

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Динамическое распределение памяти - C++
как писать эту на программе с++ Даны действительные числа . Получить действительную квадратную матрицу порядка n&lt;8, элементами...

Динамическое распределение памяти - C++
Не подскажите , здесь где-то есть ошибка? задача : Даны действительные числа . Получить действительную квадратную матрицу порядка n&lt;8,...

Динамическое распределение памяти - C++
Динамическое распределение памяти Ребят выручайте уж совсем плохо с ним:

Динамическое распределение памяти - C++
Ни разу не работал с динамическим распределением. Объясните пжл, что я сделал не так. Цель - получить большую область памяти (состоящей из...

Динамическое распределение памяти - C++
Помогите переделать программу в соответствии с условиями: а) для хранения массивов используйте динамически распределяемую память; б)...

8
Lampa
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
15.03.2009, 10:40 #2
А зачем у тебя двойной for???
Сделай проще скопируй сначала часть да нужного элемента , а потом уже после него.
0
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
15.03.2009, 10:44  [ТС] #3
в одном n,а в другом n-1,а можно записать for(i,j;i<n,j<n-1;i++,j++)
0
Lampa
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
15.03.2009, 10:56 #4
C++
1
2
3
4
5
6
7
8
9
10
11
int x=0;
int *tmp = new int[n-1];
 
cout<<" x=";
cin>>x;
memcpy(tmp,p,sizeof(int)*(x-1));
for(int i=x;i<n;i++)
tmp[i-1]=p[i];
 
if(p != NULL) delete[] p;
return tmp;
Вот так работает.
И для справки если new не может выделить память она не возвращает NULL , а бросает эксепшен.
0
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
15.03.2009, 11:10  [ТС] #5
memcpy(tmp,p,sizeof(int)*(x-1));ЧТО ЭТО???
0
Lampa
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
15.03.2009, 11:58 #6
Цитата Сообщение от demanxxx Посмотреть сообщение
memcpy(tmp,p,sizeof(int)*(x-1));ЧТО ЭТО???
Если не знаешь замени на
C++
1
2
for(int i=0;i<x;i++)
tmp[i]=p[i];
делает одно и тоже.
0
sigmaalgebra
9 / 9 / 0
Регистрация: 15.03.2009
Сообщений: 76
15.03.2009, 19:27 #7
Помогите пожалуста:
Я хочу создать двойной массив :
C++
1
2
3
4
5
int n=3;
int **a;
a=new (int *) [n];
for(int i=0;i<n;i++)
 a[i]=new int [n];
Почему компилятор ругается на такое выделение памяти? Я же выделила память под массив указателей типа int...
0
Lampa
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
15.03.2009, 20:07 #8
Цитата Сообщение от sigmaalgebra Посмотреть сообщение
Помогите пожалуста:
Я хочу создать двойной массив :
C++
1
2
3
4
5
int n=3;
int **a;
a=new (int *) [n];
for(int i=0;i<n;i++)
     a[i]=new int [n];
Почему компилятор ругается на такое выделение памяти? Я же выделила память под массив указателей типа int...
вместо a=new (int *) [n];
напиши
a=new int*[n];

почему так , фиг его знает. Может просто синтаксис, а может есть более умное объяснение.
0
Алексей5
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 5
15.03.2009, 20:09 #9
Ругается в третьей строчке? По моему у тебя скобки в a=new (int *) [n]; не должны быть.

Добавлено через 1 минуту 11 секунд
Так по синтаксису положено
0
15.03.2009, 20:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2009, 20:09
Привет! Вот еще темы с ответами:

Динамическое распределение памяти - C++
Дан динамический целочисленный массив y1,y2,....,yn. и и динамическая символьная переменная h. Если значение h равно '+', преобразовать...

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

Динамическое распределение памяти - C++
По заданию необходимо сделать анимацию движения эллипса по траектории эллипса. Вроде все работает, но необходимо динамически использовать...

Динамическое распределение памяти - C++
Добрый вечер, помогите пожалуйста разобраться с задачкой!!! Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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