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

Rispondi quotando