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;
}