Salve a tutti, è la prima volta che scrivo in questo forum, e sono lieto di incominciare a rompervi un pò.
Il testo dell' esercizio che devo svolgere è questo:
Scrivere una funzione che presi in input due vettori di interi A e B e le loro dimensioni, elimina dal vettore A
compattandolo tutti i valori che non sono presenti anche in B e ritorna il numero di valori rimasti in A. Il
prototipo della funzione è long Com(int A[], long dimA, int B[], long dimB). Ad esempio
se A = [2, 7, 2, 4, 9, 9, 5] (dimA = 7) e B = [5, 5, 4, 6, 2] (dimB = 5) allora la
funzione modifica il vettore A in modo tale che nelle prime 4 posizioni di A vi sia [2, 2, 4, 5] e ritorna 4.
Ho provato a svolgerlo e non riesco a capire dove sia il mio errore, potreste aiutarmi?
codice:#include<stdio.h> long Com(int A[],long dimA,int B[],long dimB); int main(){ long n,m; printf("Inserisci due valori n e m\n"); scanf("%ld%ld",&n,&m); printf("Inserisci i valori del primo vettore\n"); int a[n],b[m]; long x,j,z; for(x=0;x<n;x++){ scanf("%d",&a[x]);} printf("Inserisci i valori del secondo vettore\n"); for(j=0;j<m;j++){ scanf("%d",&b[j]);} long s=Com(a,n,b,m); printf("La lunghezza del nuovo vettore modificato è %ld\n",s); printf("Il vettore modificato è uguale a...\n"); for(z=0;z<s;z++){ printf("%d\n",a[z]);}} long Com(int A[],long dimA,int B[],long dimB){ long i,j,k=0; for(i=0;i<dimA;i++){ for(j=0;j<dimB && (A[i]!=B[j]);j++){ if(A[i]==B[j]) {A[k]=A[i]; k++;} } } return k;}
Dove sbaglio?
Vi ringrazio in anticipo, ciauz!!![]()

Rispondi quotando
).