Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 23:41   #1
vanek1
Пользователь
 
Регистрация: 28.11.2010
Сообщений: 11
По умолчанию Как удалить(добавить) элемент массива?

допустим получили динамический одномерный массив
Код:
#include <iostream>
using namespace std;
void main()
{
int* matr;
int n;	
cout << "Vvedite razmernost' massiva ";
cin >> n;
matr = new int[n];
for(int i=0; i< n ; i++)
{
matr[i]= rand()% 100;
cout << matr[i] << " " ;
}
return 0;
}
получился к примеру массив из пяти элементов:
1, 2, 3, 4, 5
Как удалить. допустим, второй элемент массива, чтоб массив стал таким:
1,3,4,5
и как добавить элмент с заданным номером.

И как всё это вставить в программму, чтобы получился новый массив.
vanek1 вне форума Ответить с цитированием
Старый 15.12.2010, 00:00   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

1. Нужно создать массив на n-1 элемент
Код:
int *result = new int[n - 1];
2. В цикле записать в него все элементы, кроме элемента со вторым номером
Код:
int j = 0;
for(int i =0; i < n; i++){
    if(i != 2){
         result[j++] = matr[i];
    }
}
3. Удалить первый массив
Код:
delete [] matr;
4. Присвоить переменной matr адрес нового массива
Код:
matr = result;
Как-то так, могу ошибаться. Давно с динамической памятью не работала.
Добавить практически так же. Создаете массив, только с бОльшим количеством элементов, копируете в него старый массив до заданного элемента, потом вставляете заданный элемент и продолжаете копировать старый массив в новый. А потом удаляем старый массив и присваиваем ему новый адрес.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 15.12.2010 в 00:02.
ACE Valery вне форума Ответить с цитированием
Старый 15.12.2010, 07:47   #3
vanek1
Пользователь
 
Регистрация: 28.11.2010
Сообщений: 11
По умолчанию

2. В цикле записать в него все элементы, кроме элемента со вторым номером
Код:
int j = 0;
for(int i =0; i < n; i++){
    if(i != 2){
         result[j++] = matr[i];
    }
}
А как удалить элемент с клавиатуры?
vanek1 вне форума Ответить с цитированием
Старый 15.12.2010, 22:26   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

эм... если я правильно поняла, то вы хотите, чтоб пользователь ввел номер того элемента, который надо удалить?

Код:
cin >> del_element;
int j = 0;
for(int i =0; i < n; i++){
    if(i != del_element){
         result[j++] = matr[i];
    }
}
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OrCad 16.3 как добавить элемент в библиотеку iukash Софт 43 09.03.2011 15:37
удалить элемент из массива dron-k Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 17.09.2010 17:46
Как удалить\добавить элемент массива с++ Sanu0074 Помощь студентам 3 15.06.2010 11:53
добавить/удалить элемент Revenholm Общие вопросы C/C++ 3 13.06.2009 17:17
Удалить элемент массива pavel42 Помощь студентам 14 21.05.2009 08:52