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

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

Войти
Регистрация
Восстановить пароль
 
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
#1

Динамический массив и указатель на указатель - C++

03.10.2012, 20:12. Просмотров 672. Ответов 3
Метки нет (Все метки)

Спасибо за внимание) Задача такова: нужно удалить элемент по индексу, при этом уменьшить сам массив на 1 (т.е. удалили элемент - уменьшился массив). Помогите!



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int N = 10
    int *a = new int [N];
    int k = 5;
 
        cin >> k;
 
    func(a, N, k);
    
 
void func(int *a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *(a+i);
    }
 
    delete []a;         ВОТ ТУТ И ПРОБЛЕМА. 
    *a = *b;            после удаления а, нужно к а приравнять b
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамический массив и указатель на указатель (C++):

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. - C++
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...

Динамический массив и указатель - C++
Всем привет. Пытаюсь понять тему динамических массивов. Прошу помочь разобраться в следующем: Есть код (пример): int num = 5;...

Умный указатель и динамический массив - C++
Здравствуйте! Есть проблема со следующим заданием. Есть класс умного указателя, используя его необходимо, создать каталог товаров (+ 2...

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

Указатель на двухмерный динамический массив - C++
Друзья, нужна Ваша помощь! Создаю одномерный динамический, создаю указатель на него (вернее на его первый эл-т). То же самое пытаюсь...

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

3
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
03.10.2012, 20:17 #2
Вместо *a = *b; надо a=b;

А чтобы вернуть из функции новый массив надо изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func(int **a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *((*a)+i);
    }
 
    delete [](*a); 
    *a = b;
}
1
jon_illien
3 / 3 / 1
Регистрация: 14.08.2012
Сообщений: 78
03.10.2012, 20:48  [ТС] #3
спасибо. замечательно. вышло.

Добавлено через 26 минут
Цитата Сообщение от doctor_lecter Посмотреть сообщение
Вместо *a = *b; надо a=b;

А чтобы вернуть из функции новый массив надо изменить так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func(int **a, int &n, int k)
{
    int *b = new int [n-1];
    
 
    for(int i=0, j=0; i<n; i++)
    {
        if(i==k)    continue;
        *(b+j++) = *((*a)+i);
    }
 
    delete [](*a); 
    *a = b;
}
Все таки не недоумеваю, зачем нужен указатель на указатель
0
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
03.10.2012, 20:57 #4
Потому что указатель который передается в функцию и указатель внутри функции это не одно и тоже; и поэтому при изменении значения указателя внутри функции вне функции он не изменится.
1
03.10.2012, 20:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2012, 20:57
Привет! Вот еще темы с ответами:

Нужно сделать указатель на динамический двумерний массив - C++
Есть динамический массив, псевдо-код: #include &lt;iostream&gt; using namespace std; const int x = 10; int main() { ...

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

Не работает динамический массив в классе: что раньше, указатель или размер? - C++
Подскажите пожалуйста где ошибка class arar { int*arr, size; public: arar() :arr(new int()), size(10) { for (int i(0); i...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...


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

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

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