Mira el principal problema es que la variable n la tienes mal definida. Deberias pasarla por argumento a las demas funciones. Y no con un define como hiciste.
Si uqeres usar un define entonces no podes pedir la cantidad de elementos. Quedaria fijo para toda las ejecuciones del programa.
Mira como lo cambie un poco:
Código C++:
Ver original#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <vector>
#include <math.h>
using namespace std;
int creacion(int n , int v[]);
int busqueda(int n ,int y,int v[]);
int main(void);
int creacion(int n , int v[])
{
int x,i;
for(i=0; i<=n; i++)
{
cout<<"Introduzca el elemento"<<i<<endl;
cin>>x;
v[i]=x;
}
}
int busqueda(int n , int y,int v[])
{
int contador,i;
contador=0;
for (i=1 ; i<=n ; i++)
{
if(v[i]==y)
{
contador=contador+1;
}
else
{
contador=contador;
}
}
return contador;
}
int main(void)
{
int y,res,n;
cout<<"Cuantos elementos tenemos?"<<endl;
cin >>n;
int v[n];
creacion(n,v);
cout<<"Que elemento desea contar?"<<endl;
cin>>y;
res=busqueda(n,y,v);
cout<<"El resultado es"<<res<<endl;
return 0;
}