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!!