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

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

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

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

15.03.2009, 10:22. Просмотров 2004. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lampa
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
15.03.2009, 10:40     Динамическое распределение памяти #2
А зачем у тебя двойной for???
Сделай проще скопируй сначала часть да нужного элемента , а потом уже после него.
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++)
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 , а бросает эксепшен.
demanxxx
0 / 0 / 0
Регистрация: 22.11.2008
Сообщений: 36
15.03.2009, 11:10  [ТС]     Динамическое распределение памяти #5
memcpy(tmp,p,sizeof(int)*(x-1));ЧТО ЭТО???
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];
делает одно и тоже.
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...
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];

почему так , фиг его знает. Может просто синтаксис, а может есть более умное объяснение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2009, 20:09     Динамическое распределение памяти
Еще ссылки по теме:

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

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

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

Добавлено через 1 минуту 11 секунд
Так по синтаксису положено
Yandex
Объявления
15.03.2009, 20:09     Динамическое распределение памяти
Ответ Создать тему
Опции темы

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