Em đang làm bài tách các mảng số âm và số dương sao cho các số dương tăng dần và đứng bên trái còn các số âm thì đứng bên phải , ý tưởng của e là tách các số âm và dương ra 2 mảng khác nhau rồi Sort từng mảng sau đó lại gộp lại nhưng Code của e đang bị lỗi , anh chị nào kiểm tra lại hộ e được ko ạ
#include<iostream>
void input(int a[], int n)
{
for (int i = 0; i < n; i++)
{
std::cin >> a[i];
}
}
void output(int a[], int n)
{
for (int i = 0; i < n; i++)
{
std::cout << a[i] << " ";
}
}
void Swab(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
void Sort(int a[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = n - 1; j > i; j--)
{
if (a[j] < a[j-1])
{
Swab(a[j], a[j - 1]);
}
}
}
}
void TachMang(int a[], int b[], int c[], int n, int &p, int &q)
{
p = 0;
q = 0;
for (int i = 0; i < n; i++)
{
if (a[i] > 0)
{
b[p] = a[i];
p++;
}
else
{
c[q] = a[i];
q++;
}
}
}
void GopMang(int b[], int p, int c[] , int q, int temp[], int &n)
{
n = p + q;
for (int i = 0; i < n; i++)
{
if (i < n)
{
temp[i] = b[i];
}
else
{
temp[i] = c[i - p];
}
}
}
int main()
{
int a[100];
int n;
std::cout << "Nhap so phan tu mang A: ";
std::cin >> n;
int b[100];
int p = 0;
int c[100];
int q = 0;
int temp[100];
input(a, n);
output(a, n);
printf("\n");
TachMang(a, b, c, n, p, q);
n = p + q;
Sort(b, p);
Sort(c, q);
GopMang(b, p, c, q, temp, n);
output(temp, n);
return 0;
}