В массиве нужно переместить положительные числа в левую сторону, а отрицательные в правую, не нарушая порядок. Не желательно использовать сложные алгоритмы сортировки, указатели. Не знаю что нужно написать в теле цикла, как определить нужную позицию в новом масиве.
#include <iostream>
using namespace std;
int main() {
int i, n;
int a[]={-2,1,4,-3,2,-1,5};
int b[7]; //масив для отсортированых чисел
for (i=0; i<7; i++) {
if (a[i]>0) {
//положительные числа
}
}
for (i=0; i<7; i++) {
if (a[i]<0) {
//отрицательные
}
}
for (i=0; i<7; i++) {
cout<<b[i]<<" ";
}
return 0;
}
Простой способ без библиотек и указателей.
#include <iostream>
using namespace std;
int main() {
int i;
int a[]={-2,1,4,-3,2,-1,5};
int b[7]; //масив для отсортированых чисел
int j=0;
for (i=0; i<7; i++) {
if (a[i]>0) {
b[j]=a[i];
j++;
}
}
for (i=0; i<7; i++) {
if (a[i]<=0) {
b[j]=a[i];
j++;
}
}
for (i=0; i<7; i++) {
cout<<b[i]<<" ";
}
return 0;
}
Лучше воспользоваться стандартным алгоритмом:
#include <algorithm>
#include <iostream>
#include <iterator>
int main()
{
int a[] = {-2, 1, 4, -3, 2, -1, 5};
std::stable_partition(std::begin(a), std::end(a), [](int x){return x >= 0;});
// Печатает `1 4 2 5 -2 -3 -1`
for (int x : a)
std::cout << x << " ";
std::cout << '\n';
}
Продвижение своими сайтами как стратегия роста и независимости