allora ho risolto così:
ma mi scambia gli elementi nel modo sbagliato! Non deve fare cosi!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; }
dovrebbe portare gli elementi negativi nella porzione finale dell'array mentre gli elementi positivi nella porzione iniziale!

Rispondi quotando