PDA

View Full Version : [C] altra soluzione storta?


D4rkAng3l
25-05-2005, 11:16
L'esercizio chiede:
Scrivere una funzione che preso in input un vettore di interi ordinato in senso non decrescente e la sua dimensione, elimina dal vettore tutti i duplicati compattandolo e ritorna il numero di elementi eliminati

Es:

Se V = [2,4,4,5,7,7,7] la funzione modifica il vettore in modo tale che i primi 4 elementi siano [2,4,5,7] e ritorna 3

Il codice è il seguente:


long EliminaDuplicati(int V[], long dim){

int k=0, i;
for(i=1;i<dim;i++){
if(V[i] != V[k]{
k++;
V[k] = V[i];
}
}
return dim - (k+1);
}


La cosa che mi sembra strana è che il doppione 4 viene effettivamente eliminato ma i 2 sette di troppo NO...ora vabbè che nell'esempio dice:
"in modo tale che i primi 4 elementi siano [2,4,5,7]" ma nel testo dice di fare la funzione che elimina i duplicati...e i 7 non vengono eliminati anche se effettivamente viene ritornato 3....

mmm...altra esercitazione preesame fatta di merda dal proff? :mc:

Grazie
Andrea

cionci
25-05-2005, 12:19
A occhio mi sembra che vada bene...il problema è la dimensione del vettore...
Il nuovo vettore avrà dimensione pari a quella originale - il numero ritornato dalla funzione...quindi quando lavori su quel vettore devi considerare solo i primi 4 elementi...gli altri sono rimasti lì perchè presenti nel vettore iniziale...

D4rkAng3l
25-05-2005, 12:26
ah ok..avevo capito che difatto la comodità fosse ridurre le dimensioni del vettore che però non vengono ridotte e mi sembrava strano