Allora, presupponento che è solo un esercizio, la funzione è ok ( a meno di una cavolata che ti scrivo in fondo)
Se segui mentalmente cosa accade quando chiami la funzione ti accorgi ogni valore viene scansionato dal tuo secondo IF, ovvero:
codice:
if(first==last)
{
if(*(vett+first)==elemento)
return 1;
else
return 0;
}
Indi l'ultimo controllo e' inutile/dannoso, ovvero conti due volte lo stesso elemento.
Detto in altri termini, devi eliminare questa parte:
codice:
if(*(vett+first)==elemento)
{
return parziale1+parziale2 +1;
}
else
{
return parziale1+parziale2 ;
}
e sostituirla con:
codice:
return parziale1 + parziale2;
tutto qua =)
per quanto riguarda quella cavolata a cui alludevo inizialmente, i primi due controlli non fanno uso delle variabili locali, indi e' inutile istanziare queste ultime prima =)
in altre parole:
codice:
if(first==last)
{
if(*(vett+first)==elemento)
return 1;
else
return 0;
}
if(first>last)
return 0;
int parziale1,parziale2;
int pivot;
occupa meno memoria =)
Buon proseguimento di studio ^^