Given an array of real numbers containing 25 elements, write all the positive numbers and zeros, and then all the negative ones, in the same array, keeping their order.
#include<stdio.h> #include<conio.h> #define N 10 int main() { int i,buf,k,j; int array[N]={10,2,-4,-5,1,0,0,-7,1,2}; for(i=0;i<N;++i,k=0)//главный цыкл { if(array[i]>=0) printf("%d",array[i]); //проверка,если положительное или ноль-печать. else { for(k=0;array[k]<0 || i!=N-1;++k) //в этом цыкле поиск чисел больше нуля { array[k]=array[i+k]; if(k==N-1 && array[k]<0) //проверка не закончился ли цыкл,если да-печать всех отрицательных. { for(;i<N;++i) printf("%d ",array[i]); i=N; //это условие конца главного цыкла. } } if(array[k]>=0) /*проверка числа на положительность,затем менять местами в масиве до тех пор,пока он не станет на первый елемент,или предедущие тоже положительное или ноль*/ { for(;array[k-1]<0 || array[k]!=array[0];--k) { buf=array[k-1];array[k-1]=array[k];array[k]=buf; } } if(i!=N) printf(" %d ",array[k]); //печать елемент масива } } getch(); return 0; }