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

Удаление элемента в динимическом массиве - C++

Восстановить пароль Регистрация
 
Just_2D
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 22
11.03.2013, 19:24     Удаление элемента в динимическом массиве #1
Есть динамический массив, нужно удалить с него элемент, и сразу же уменьшить размерность массива на 1.
Помогите это реализовать. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 19:24     Удаление элемента в динимическом массиве
Посмотрите здесь:

C++ Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
C++ В одномерном массиве, состоящем из вещественных элементов вычислить номер минимального элемента в массиве, сумму элементов массива
задачи в Двумерном массиве. Определить, есть ли в массиве два одинаковых элемента, поменять местами элементы C++
C++ Удаление элемента из списка и поиск элемента
C++ Описать класс «множество» (добавление и удаление элемента, пересечение, объединение и удаление множеств )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hofmn
Helter Skelter
 Аватар для hofmn
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
11.03.2013, 20:03     Удаление элемента в динимическом массиве #2
Для этого лучше подойдет стек или очередь.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
11.03.2013, 20:11     Удаление элемента в динимическом массиве #3
Если я правильно понял
Как то так наверное
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
29
30
31
32
int* del(int * a,int b){
 
    for(int i=0;i<10;i++){//начиная с указанного индекса перемешаем значения
        if(i>=b && i<10){
            a[i]=a[i+1];
        }
    }
    int *c= new int[10-1];//новый массив с уменьшенным размером
    for(int i=0;i<10-1;i++){
        c[i]=a[i];//перезапись старого массива в новый
    }
 
    delete []a;
 
    return c;
}
 
int main(){//пример использования
    int * a=new int[10];//исходный массив где будем удалять элемент
    int b=3;//индекс удаляемого элемента
    for(int i=0;i<10;i++)//инициализация массива
        a[i]=i;
 
    int *d=new int[10-1];
    d=del(a,b);
 
    for(int i=0;i<9;i++)
        cout<<d[i]<<endl;
 
    delete []d;
    return 0;
}
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
11.03.2013, 20:16     Удаление элемента в динимическом массиве #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
29
30
31
32
33
34
35
36
#include <iostream>
 
using namespace std;
 
int main()
{
    int n;
    cout<<"Enter array size: ";
    cin>>n;
    int* mas = new int[n];
    int* tmp;
    for(int i=0;i<n;i++){
        mas[i] = rand()%10;
        cout<<mas[i]<<" ";
    }
    cout<<endl;
    int el;
    cout<<"Jakuj position elemed deleted: ";
    cin>>el;
    tmp = new int[n-1];
    for(int i=0,j=0;i<n;i++)
        if(el == i)
            i;
        else
            tmp[j++] = mas[i];
    delete [] mas;
    --n;
    mas = tmp;
    cout<<endl;
    for(int i=0;i<n;i++){
        cout<<mas[i]<<" ";
    }
    delete [] mas;
    system("pause");
    return 0;
 }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
11.03.2013, 20:18     Удаление элемента в динимическом массиве #5
имхо, лучше сдвинуть влево на один элемент всё, что правее удаляемого элемента и уменьшить переменную "used"
Yandex
Объявления
11.03.2013, 20:18     Удаление элемента в динимическом массиве
Ответ Создать тему
Опции темы

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