devo fare questo semplice esercizio in C:
Scrivere una funzione int diffvals(int A[], int B[], int n) che presi in input due array A e B, ognuno di n interi, ritorna il numero di valori distinti che o sono presenti in A ma non in B oppure sono presenti in B ma non in A.
Es:
A = {1,2,1,3,3} B = {5,2,2,5,2} diffvals(A, B, 5) ritorna 3
io la funzione l'ho fatta in questo modo:
codice:
int diffvals(int a[], int b[], int n){
int j,k,Fa=1,Fb=1,count=0;
for(int i=0;i<n;i++){
j=0; k=0;
while(Fa==1 && j<n){
if(a[i]!=b[j])
Fa=1;
else
Fa=0;
j++;
}
while(Fb==1 && k<n){
if(b[i]!=a[k])
Fb=1;
else
Fb=0;
k++;
}
if(Fa==1)
count++;
if(Fb==1)
count++;
}
return count;
}
però è sbagliata perchè se, come nell'esempio, ci sono due valori uguali nello stesso vettore, la funzione conta entrambi. Sapreste aiutarmi voi? io ho pensato di mettere tutti i valori distinti (comprese le ripetizioni) in un terzo vettore e poi fare la verifica li ma so che non è giusta come cosa