配列はコードで定義されており、元の配列の正の数が元の配列の負の数よりも大きい場合は、配列内の正の数を数えて新しい配列を作成し、すべての正の数を挿入する必要があります。反対の場合 (負の数が正の数よりも大きい場合、新しい配列を作成し、すべての負の数を挿入します)
等しい場合 (正の数と負の数)、新しい配列を作成し、最初にすべての正の数を挿入し、次にすべての負の数を挿入します。
*関数内で malloc.. を使用して配列を作成する必要があります。
コード :
#include <stdio.h>
#define n 10
void func(int *arr)
{
int i,j,c1=0,c2=0,mat;
for(i=0;i<n;i++)
{
if (*arr>=0) c1++;
else c2++;
arr++;
}
if(c1>c2)
{
mat=(int *)malloc(c1*sizeof(int));
for(i=0;i<c1;i++)
if(*arr>0)
{
mat=*arr;
mat++;
arr++;
}
}
else if(c2>c1)
{
mat=(int *)malloc(c2*sizeof(int));
for(i=0;i<c2;i++)
if(*arr<0)
{
mat=*arr;
mat++;
arr++;
}
}
else
{
mat=(int *)malloc((c1+c2)*sizeof(int));
for(i=0;i<n;i++)
if(*arr>0)
{
mat=*arr;
mat++;
arr++;
}
for(i=0;i<n;i++)
if(*arr<0)
{
mat=*arr;
mat++;
arr++;
}
}
}
main()
{
int array={6,3,5,-5,4,3,-6,-9,6,-16};
int *arr=array;
func(arr);
}