Io farei una cosa più sensata. Creerei una funzione che controlla se il valore esiste nel vettore compattato in primis.
Ritorna 0 se non trovato e 1 se trovato
int ControllaVettore(int v[], int dimensione, int valore)
{
int i = 0;
for(i = 0; i < dimensione; i++)
{
if(v[i] == valore)
return 1;
}
return 0;
}
Così puoi confrontare quando vuoi se il valore esiste.
Poi nel punto del tuo dubbio metterei
for(ncomp=0/*indice vettore compattato*/,i=0;i<n;i++)/*scandisce vett[i]*/
{
if((!vett[i])||(ControllaVettore(vett,ncomp,vett[i])))
trovato=1;
if(!trovato)/*se il flag e' negativo assegna vett[i] a al vettore compattato comp[ncomp]*/
{
comp[ncomp]=vett[i];
ncomp++;/*incrementa l'indice del vettore compattato*/
}
}
oppure più semplicemente
for(ncomp=0/*indice vettore compattato*/,i=0;i<n;i++)/*scandisce vett[i]*/
{
if(!((!vett[i])||(ControllaVettore(vett,ncomp,vett[i]))))
{
comp[ncomp]=vett[i];
ncomp++;/*incrementa l'indice del vettore compattato*/
}
}