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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2016, 18:19   #1
Александр Дубов
Новичок
Джуниор
 
Регистрация: 23.11.2016
Сообщений: 1
По умолчанию Одномерный массив. Перестановка элементов

Здравствуйте, при работе с С++ у меня возникла проблема
задание: Все отрицательные элементы массива X перенести в его начало, а все остальные – в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов. Дополнительный массив не заводить.
но в конечном массиве выводится на консоль заместо отрицательных чисел какие-то 7-8-значные (но это не адрес) . Если не трудно, не могли бы Вы указать область, в которой была совершена ошибка? Заранее спасибо.
Код:
int _tmain(int argc, _TCHAR* argv[])
{ setlocale(LC_ALL,"rus");
        int n;
        int *a;
        cout<<"Введите размер массива"<<endl;
        cin>>n;
        a=new int[n];
        cout<<"Исходный массив"<<endl;
		for(int i=0;i<n;i++)
        {
          a[i]=rand()%200-100;
          cout << a[i] << " ";
	    }
		int c, j;
		
        for (int i = 0; i < n; i++)
			if (a[i]<0) 
			{
             for (int j = i; a[j-1]>=0; j--)
			 {
               c=a[j-1];
		       a[j-1]=a[j];
			   a[j]=c;
			 }
			}

      cout<<"\n"<<"Полученный массив: "<<"\n";
       for (int i=0;i<n;i++)
	   {
       cout<< a[i]<<" ";
	   }
	   _getch();
	return 0;
}
Александр Дубов вне форума Ответить с цитированием
Старый 23.11.2016, 19:27   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вы не контролируете нижнюю границу и a[j-1] легко превращается в a[-1], a[-2] и т.д.
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
одномерный массив - определение элементов AlexP777 Паскаль, Turbo Pascal, PascalABC.NET 5 28.02.2013 19:17
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
С++ одномерный массив и сумма элементов Blondy Помощь студентам 1 19.11.2009 17:09
одномерный массив n-элементов serj-07 Помощь студентам 1 24.03.2009 23:36