Come hai detto masaniello, sarebbe meglio usare due funzioni, la prima che restituisce il risultato vero e proprio al chiamante (ovvero se davvero almeno un elemento di X occore K volte in Y), la seconda invece la usi per cercare le occorrenze di un elemento di X in Y). prendendo esempio dal codice che hai postato, potrebbe essere:
#include<iostream>
using namespace std;
int Occorrenze(int n ,const int vett[],int dim); // <--- funzione che mi dice quante volte un numero occore in un array di dimensione dim
bool Verifica(const int vettX[],int dimX,const int vettY[],int dimX,int nOcc ) // <--- Restituisce se almeno un valore di vettX occorre nOcc volte in vettY
int main(){
const int x[]={1,2,4};
const int y[]={1,1,1,2,1,4,-5,6};
int k=0;
cout<<"Inserire un numero k positivo per calcolare le occorrenze di x in y"<<endl;
cin>>k;
if(ValutaOccorrenze(x,y,3,8,k)
cout<<"LA CONDIZIONE E' VERIFICATA"<<endl;
else
cout<<"LA CONDIZIONE NON E' VERIFICATA"<<endl;
return 0;
}
int Occorrenze(int n,const int vett[],int dim){
dim occ=0;
for (int i=0;i<dim;++i)
if (n == vett[i]) ++occ;
return occ;
}
bool Verifica(const int vettX[],int dimX,const int vettY[],int dimY, int nOcc){
if (dimY<=0 || dimX<=0 || nOcc<=0) return false;
for(int i=0;i<dimX;++i)
if (nOcc == Occorrenze(vettX[i],vettY,dimY)) return true;
return false;
}