Hola mapers, mirando tu codigo de la funcion validar, me parece que solo es necesario colocar un ciclo do..while ya que tu le pones al momento de asignar el valor a cada variable un retorno de 3 variables (asi lo entiendo) te pongo como quedaria:
#include<iostream.h>
#include<conio.h>
int validar(void)
{
int n;
static int i = 1;
do{
cout<<"ingrese nota"<< i <<": " <<endl;
cin>>n;
if( n >= 0 && n <= 20 )
cout<<"la nota es correcta"<<endl;
else
cout<<"la nota es incorrecta "<<endl;
} while( (n > 20) || (n < 0) );
i++;
return n;
}
Luego, en tu funcion para calcular el promedio, el retorno que devuelve deberia ser un float y no int como lo colocaste
quedando asi
#include<iostream.h>
#include<conio.h>
float promedio(int n1, int n2, int n3)
{
float w = (n1 + n2 +n3) / 3.0;
return w;
}
Bye.