Arreglos – mostrar promedio mayor

Hacer un programa que permita ingresar código, nombre y promedio final del alumno y que imprima alumnos que tengan promedio mayor a 11 y promedios que están entre 5 y 11.

#include<iostream.h>
#include<conio.h>
#include<string.h>
#define MAX 50
struct alumno{
char codigo [9];
char nombre [MAX];
int notaprom;
};
void LeeAlumnos(int, struct alumno[]);
//void ordenaAlfa(int, struct alumnos[]);
void prommay11(int, struct alumno[]);
void promentre5y11(int, struct alumno[]);
//void listado(int, struct alumno[]);
void main()
{int n;
struct alumno alum[MAX];
 cout<<"Ingrese el límite del arreglo:"; cin>>n;
 LeeAlumnos(n,alum);
 cout<<"Los alumnos que tienen promedio > que 11 son:"<<endl;
 prommay11(n,alum);
 cout<<"Los alumnos que tienen promedio entre 5 y 11 son:"<<endl;
 promentre5y11(n,alum);
 getch();
 }
 //implementación de procedimientos
 void alumnos(int n, struct alumno a[])
 {for(int i=0;i<n;i++)
  {cout<<"codigo:["<<(i+1)<<"]"; cin>>a[i].codigo;
   cout<<"nombre:["<<(i+1)<<"]"; cin>>a[i].nombre;
   cout<<"promedio:["<<(i+1)<<"]"; cin>>a[i].notaprom;
   }
  }
  void prommay11(int n, struct alumno a[])
  {for(int i=0;i<n;i++)
   { if(a[i].notaprom>11)
   cout<<a[i].codigo<<"t"<<a[i].nombre<<"t"<<a[i].notaprom<<endl;
   }
  }
  void promentre5y11(int n, struct alumno a[])
  {for(int i=0;i<n;i++)
   {if(a[i].notaprom>=5 && a[i].notaprom<=11)
    cout<<a[i].codigo<<"t"<<a[i].nombre<<"t"<<a[i].notaprom<<endl;
   }
  }