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:
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 cosacodice: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; }

Rispondi quotando