no termino de entender el problema
pero hago un par de correciones
1.
el do-while se diferencia del while porque evalua al final... es decir
int numero = 21;
while(numero<10){
cout<<"numero menor que 10" << endl;
}
do{
cout <<"cualquier numero"<<endl;
}while(numero<10)
en el primer caso el while se evalua y se salta... en el segundo caso, el do se ejecuta, pero al llegar al final no se repite porque no pasa la evaluación
así que tu codigo siempre va a pasar el error de
Vuelve a introducir un numero que este dentro del rango, por favor
aunque sea valido
2.
te dicen que uses la funcion "lector de enteros", pero dentro del do-while en la linea 16 no lo usas... debería ser igual que en la linea 11...