allora ho risolto così:
codice:
#include <stdio.h>
#define N 10
void positiviNegativi2(int v[],int dim){
int i;
int *p1,*p2,app=0;
p1=&(v[0]);
p2=&(v[dim-1]);
for(i=0; (i<=dim/2); i++){
if (v[i]<=0){
app=*(p1);
*(p1)=*(p2);
*(p2)=app;
p1++;
p2--;
}
}
}
int main(){
int i;
int v[N]={3,-4,6,-8,4,-2,8,-2,7,-12};
printf("Vettore originale: ");
for (i=0; i<=N-1; i++)
printf("%4d", v[i]);
positiviNegativi2(v,N);
printf("\n\n");
printf("Vettore permutato: ");
for (i=0; i<=N-1; i++)
printf("%4d", v[i]);
printf("\n\n");
return 0;
}
ma mi scambia gli elementi nel modo sbagliato! Non deve fare cosi!
dovrebbe portare gli elementi negativi nella porzione finale dell'array mentre gli elementi positivi nella porzione iniziale!