Originariamente inviato da thebeat
Davvero davvero grazie ma non devo modificare la funzione di stampa ma devo proprio eliminarli durante l'ordinamento quindi la funzione selectionsort().
Cmq grazie davvero per l'idea
codice:
void selectionsort(int *a, int &size)
{
  int i, j, min, p,length;
  length=size;
  //primo ciclo esterno for da 0 a size-1
  for(i = 0; i < size - 1; ++i)
  {
    //assena a min il valore dell'array
    min= a[i];

    // memorizza l'indice nella va p
    p = i;
    
    //ciclo for interno da i+1(x' il min si trova gia' in a[0]) a size
    for(j = i + 1; j < size; ++j)
    {
      //se il valore dopo è < di quello prima inverti
      if (a[j] < min)
      {
        min = a[j];
        p = j;
      }
    }
    a[p]=a[i];
    a[i]=min;
  }
  
  //cerco e tolgo le doppie
  int patt;
  length=size;
  for (i=0;i<(length-1);i++)
  {
    patt=a[i];
    for(j=i+1;j<length;j++)
    {
      if (patt==a[j])
      {
        //scorro di un posto gli elementi tra j+1 e length
        for(int k=j+1;k<length;k++)
        {
          size[k-1]=size[k];
          length--;
        }
      }
    }
  }
  
  //ridimensiono l'array creandone uno nuovo
  int *b = new int[length];
  
  for(i=0;i<length;i++)b[i]=a[i];
  size=length;
  a=b;

}