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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 20:36   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию С++ Visual: создание динамического массива для индексов

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

Вот здесь мне надо хранить индексы элементов, у которых поменялся знак... но когда я проверяю, что хранится в массиве индексов, компилятор выдает мусор....
Код:
int* arr;
int* ind; //massiv dlja hrahehija indeksov elemenov u kotorich pomenjalsja snak
int n = 0;
int j = 0;

cout<<"Vvedite razmernost masiva: "<<endl; //prosim polzovatelja vvesti razmernost massiva
cin>>n;//polushaem razmer massiva

//videljaem pamjat
arr = new int [n];

//zapolnjaem massiv sluchainim obrazom i vivodim na ekran

for (int i = 0; i < n; i++)
{
   arr [i] = (int) (rand()% 100 - 50);//zapolnaem sluchainim obrazom elementi
   cout<< arr [i]<<" ";
}
cout<<endl;
cout<< "********************************* ";
cout<<endl;
//Schitaem, skolko raz menjaetsja znak
int prev = 1, cur = 1, count = 0, temp=0;//prev - prediduchiy znak, cur - tekuchiy znal elementa, cout - chetchik dlja kol-va peremen znaka
for (int i = 0; i < n; i++)
{
	 
	cur = arr[i] >= 0 ? 1 : 0; //esli tekuchiy element bolshe ili raven 0, pemennoy tekushiy znak prisvoit znachenie 1, inache 0 
		if ( prev != cur && i != 0 )
		{	
					
			
			count++; //esli znak prediduchego elementa ne raven znaku tekuchego elementa i eto na perviy element massiva uvelichivaem chetchik
			temp=i  ;
			cout<< "i="<<i<<" ";
			cout<< arr[i]<<"; ";
			//
			ind = new int [n]; //massiv dlja hranenija indexsov - videljaem pamjat

			ind[i]=temp;
			cout<< ind [i]<<" ";
 
		}
		prev =arr[i] >= 0 ? 1 : 0;//esli element bolshe ili raven 0, prediduchemu znaku prisvoit znachenie 1 

}	
	

cout<<endl;		
cout<<"Znak pomenjalsja "<<count<<" raz"<<endl; 

cout<<"Indexi elementnov u kotorih pomenjalsja znak"<<endl;
for (int i=0; i<n;i++)
{
	cout<<ind[i]<<" ";

}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 29.04.2012, 01:11   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Начнем с простого: вы понимаете, что вы на КАЖДОЕ найденое несоответствие знаков создаете НОВЫЙ массив индексов и при этом получаете утечку паммяти, не удалив старый?
p51x вне форума Ответить с цитированием
Старый 29.04.2012, 02:37   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Да вот в том-то и дело, что так и выходит. Но как здесь можно выкрутиться?
Конечно можно сразу создать массив для индексов еще до входа в цикл проверки знаков, выделив n помяти - так а разве это динамика будет?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 29.04.2012, 10:21   #4
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Можно при создании нового массива (на n+1 элемент) копировать в него значения из старого массива (на n элементов).

я бы сделал по-другому: сделал обычную очередь из указателей, и заносил всё туда, а потом в одном цикле известное количество элементов занёс в динамический массив.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать клас для динамического массива supra89kren Общие вопросы C/C++ 5 30.03.2010 00:23
Переделать для динамического массива. Ueshua Общие вопросы C/C++ 1 20.12.2009 21:33
операция NEW для динамического массива -ushёl- Общие вопросы C/C++ 0 14.11.2009 22:00
Создание Динамического массива используя функции и файлы (С++)(HELP) Myau Thai Помощь студентам 2 24.05.2009 18:08
Создание н-мерного динамического массива Парсифаль Общие вопросы C/C++ 33 02.05.2009 18:29