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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 09:52   #1
laxe
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 19
Вопрос Вопрос

народ вот никак не могу понять как удалить из массива элемент с заданным индексом и обратно добавить элемент с заданным индексом в заданую позицию?(
laxe вне форума Ответить с цитированием
Старый 22.09.2009, 10:00   #2
Consol
Пользователь
 
Регистрация: 19.08.2009
Сообщений: 89
По умолчанию

может стоит изложить полностью задание и привести не большой примерчик, так как то что вы написали не очень понятно
Consol вне форума Ответить с цитированием
Старый 22.09.2009, 10:00   #3
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от laxe Посмотреть сообщение
народ вот никак не могу понять как удалить из массива элемент с заданным индексом и обратно добавить элемент с заданным индексом в заданую позицию?(
Со встроенными массивами - никак. То есть, физически никак.
Логическое удаление - смотреть стандартный алгоритм remove().
1. Можно использовать динамические массивы, но придется писать функцию для удаления и функцию для вставки.
2. Если использовать vector, то там есть методы удаления и вставки. Или опять же стандартные алгоритмы
LaptevVV вне форума Ответить с цитированием
Старый 22.09.2009, 10:02   #4
laxe
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 19
По умолчанию

Сформировать одномерный массив, заданной пользователем длины. Удалить из него элемент с заданным индексом, добавить элемент с заданным индексом; (например, массив 1 2 3 удалить второй элемент получится 1 2, добавить 3 в 1 позицию получится 1 3 2)

Код:
#include "stdafx.h"
#include "iostream"
#include "time.h"
using namespace std;

void main()
{
	int size; int*mas; int*mas1; int*mas2;
	cout<<"Enter size of mas:";
	cin>>size;
	mas=new int[size];
	for (int i=0; i<size; i++)
	{
		mas[i]=rand()%100;
		cout<<mas[i]<<" ";
	}
	cout<<endl;
	int key;
	cout<<"Enter key:";
	cin>>key; int index=-1;
	for(int i=0; i<size; i++)
	{
		if(key==mas[i])
			index=i;
	}
	if(index==-1)
	{
		cout<<"not found!!!";
	}
	else
	{
		mas1=new int[size-1];
		for(int i=0; i<index; i++)
		{ 
			mas1[i]=mas[i];
		}
		for(int i=index+1; i<size; i++)
		{
			mas1[i-1]=mas[i];
		}
	}
	for(int i=0; i<size-1; i++)
	{
		cout<<mas1[i]<<" ";
	}
		cout<<endl;
	int a, b;
	cout<<"Enter number:";
	cin>>a;
	cout<<"Enter position:";
	cin>>b;
	mas2=new int[size];
	for(int i=0;i<size; i++)
	{
		if(i<b)
		{
			mas2[i]=mas1[i];
		}
		else if(i==b)
		{
			mas2[i]=a;
		}
		else
		{
			mas2[i]=mas1[i-1];
		}
	}
	for(int i=0; i<size; i++)
	{
		cout<<mas2[i]<<" ";
	}
	cout<<endl;
	delete[]mas; delete[]mas1; delete[]mas2;
}
в коде удаляются элементы, а нужно чтоб удалялись индексы
laxe вне форума Ответить с цитированием
Старый 22.09.2009, 10:06   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от LaptevVV Посмотреть сообщение
Со встроенными массивами - никак. То есть, физически никак.
Логическое удаление - смотреть стандартный алгоритм remove().
Что такое встроенный массив и логическое удаление?
ds.Dante вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос!!! tigor Общие вопросы Delphi 11 23.10.2009 09:45
вопрос по c# adwaer Помощь студентам 2 27.08.2009 17:14
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Вопрос по VS C++ Arthur Общие вопросы C/C++ 2 19.01.2008 18:34