Si te fijas, estás pidiendo un valor entre 1 y 4 pero repites el bloque do-while cuando la opción elegida es diferente de 4. No creo que sea eso lo que quieres.
Deberías establecer otro valor para salir y repetir el bucle siempre que la opción elegida sea diferente a la de salir. (También puedes hacer que se repita siempre que la opción esté entre 1 y 4, eso ya es cosa tuya)
Un ejemplo de bucle que se repite hasta que introduces el 0:
do {
cout << "Introduce un numero (0 para salir): ";
cin >> numero;
} while(numero != 0);
Si lo que quieres es que se repita siempre que se elija una opción entre 1 y 4 por ejemplo, tendrías que cambiar la condición del while por:
while(numero >= 1 && numero <= 4);
Al final lo único que tienes que hacer siempre es pensar qué condición quieres utilizar para repetir el bucle y ponerla dentro del while().
Suerte.