Prima un appunto: perchè per ogni scelta fai caricare l'array? Ti suggerisco di farlo caricare una sola volta all'inizio ed eventualmente di inserire una voce di "menù" che ti permetta di ricaricarlo; se vuoi velocizzare le tue prove (non perdendo tempo ogni volta a digitare tutti questi valori) ti consiglio di commentare il caricamento da tastiera e caricare dei valori "di debug" direttamente nel codice.
Per quanto riguarda il tuo problema:
{int b;
cout<<"inserisci i numeri.\n";
for (int i=0;i<n;i++)
cin>> a[i];
cout<<"la moda è" <<frequenza (a,b,n);
break;}
Tu cerchi b all'interno dell'array a[] che ha dimensione n: ma b è indefinito!!!
E poi la funzione frequenza()
int frequenza (int a[],int b,int n){
int count;
for (int i=0;i<n;i++){
if (a[i]==b)
count++;}
return count;}
anche count parte da un valore indefinito!