salve a tutti! ho questo problema:
Progettare un algoritmo che, preso in ingresso un array v di n elementi, produce un array w contenente gli elementi distinti di v (elementi che compaiono esattamente una volta). Definire una funzione che implementa l'algoritmo nel caso in cui v contenga una sequenza di 0 e 1.
La funzione restituisce la dimensione del vettore w.
Nel programma principale stampare il contenuto del vettore w.*/
Ho pensato ad una soluzione ma non mi viene! posto il codice:

codice:
#include <stdio.h>

int carica(int v[], int n){
  int i;
  for (i=0; i<n; i++){
    do{
      printf("Inserire %d elemento:",i+1);
      scanf("%d", &v[i]);
    }while ((v[i]!=0)&&(v[i]!=1));
  }
}    

void stampa(int v[], int n){
  int i;
  for (i=0; i<n; i++)
   printf("%2d", v[i]);
}     

int distinti01(int v[], int dim, int w[]){
  int i,j,inf,med,sup,cont=0;
  int a[50];
  int b[50];
  inf=0;
  sup=dim-1;
  med=(inf+sup)/2;
  for (i=inf; i<=med; i++){                     
   printf("confronto tra elemento %d e elemento %d del 1 vettore\n", i,i+1);
    if (v[i]!=v[i++])
      a[i]=v[i];
  }
  for (j=med; j<=sup; j++){                   
   printf("confronto tra elemento %d e elemento %d del 2 vettore\n", j,j+1);
       if (v[j]!=v[j++])
       b[j]=v[j];
  }        
  for (i=inf; i<=med; i++){                   
    for (j=med; j<=sup; j++){
      if (a[i]!=b[j]){
        w[i]=a[i];
        cont+=1;
    }   
  }
 }
 printf("Vettore finale: ");
 for (i=0; i<dim; i++)
  printf("%2d", w[i]);
 return cont;
}

int main(){
 int n,cont=0;
 int v[100];
 int w[100];
 printf("Inserire dimensione vettore: ");
 scanf("%d", &n);
 carica(v,n);
 printf("Array di partenza: ");
 stampa (v,n);
 printf("\n");
 cont=distinti01(v,n,w);
 printf("\n");
 if (cont==0)
  printf("L'array non ha elementi distinti\n");
 else 
   printf("La dimensione dell'array risultante è:\n", cont);
 return 0;
}
dove sbaglio? grazie !!!!1