Ciao!
Il problema dovuto agli zeri potrebbe essere (quasi certamente lo è) dovuto dal fatto che alcune posizioni del vettore non sono state inizializzate.
Non avendo inizializzato il vettore, in esso ci sono contenuti valori "a caso". Dico a caso, perché in realtà dipende dai compilatori, alcuni potrebbero automaticamente impostarli a 0 altri no, e ritrovarti con valori assurdi.
Questo problema, è dovuto al fatto che non tutte le caselle del vettore C le vai a riempire.
Di seguito ti metto in ordine un paio di problemi che ho riscontrato nel tuo codice, e in grassetto ti evidenzio quello da te più interessato.
1) nei cicli for, tutti i cicli for, sia quelli che prendono in input un valore sia quelli che controllano la presenza di elementi da inserire in C tu usi le celle di memoria del vettore da 1 a LunghezzaVettore, il che è sconsigliato farlo.
Risolvi a questo problema, correggendo i cicli for con (i=0; i<N; i++){...}
2) Qui il tuo problema, è dovuto al fatto che hai lasciato alcune "caselle" del vettore vuote... questo perchè ti sei basato sempre sull'uso di un'unica variabile (i).
Per risolvere questo tuo problema, dovrai sfruttare l'uso di due variabili, al fine di controllare le celle del vettore A o B con una (supponiamo i) e quelle del vettore C con un'altra (supponiamo j). Ti ho riportato l'uso qui di sotto.
int i, j=0;
for(i=0; i<N; i++){
if(A[i]%2==0){ //Numero pari
C[j]=A[i];
j++;
}
}
for(i=0; i<N; i++){
if(B[i]%2==0){ //Numero pari
C[j]=B[i];
j++;
}
}
Attenzione, anche in questo modo, in coda al vettore C potresti ritrovarti valori pari a 0, perchè appunto non sono stati riempiti, però basta escluderli dalla stampa.
Una soluzione potrebbe essere che in dichiarazione del vettore C, lo inizializzi tutto per un valore dispari (Es. 1), ovvero un valore che sei sicuro non può essere corretto.
int A[N}, B[N], C[N+N];
int i;
for(i=0; i<N+N; i++){
C[i]=1;
}
//... Resto del codice ...
Buona serata,
- MoraGames