Неправильно выполняется перестановка массива
Даны два массива X(n) и Y(m). Преобразовать каждый массив, расположив вначале только положительные элементы (сохранив их порядок), остальные элементы заменить нулями. Формирование нового массива осуществлять с помощью функции. Я пробовал реализовать код, но он каждый раз выводит мусор(числа из 10+ цифр)
int newarray(int *X, int n){
for (int i = 0; i < n; i++)
if (X[i] < 0)
X[i] = 0;
int temp = 0;
for (int i = 0; i < n; i++){
if (X[i] == 0){
for (int j = i+1; j < n+1;j++)
if (X[j] != 0)
swap(X[i],X[j]);
}
}
for (int i = 0; i < n; i++)
cout << X[i] << ' ';
cout << endl;
return 0;
}
Источник: Stack Overflow на русском