#include <iostream>
#include <locale.h>
#include <string>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
int entero;
float real;
char caracter;
string cadena;
/*opcion*/int opc;
do {
cout<<"OPCIONES\n";
cout<<"1-ENTERO\n";
cout<<"2-REAL\n";
cout<<"3-CARACTER\n";
cout<<"4-CADENA\n";
cout<<"SELECCIONA UNA OPCION 1-4: ";
cin>> opc;
switch(opc){
case 1:
cout<< "INTRODUCE UN NUMERO ENTERO: ";
cin>> entero;
break;
case 2:
cout<< "INTRODUCE UN NUMERO REAL: ";
cin>> real;
break;
case 3:
cout<< "INTRODUCE UN CARACTER: ";
cin>> caracter;
break;
case 4:
cout<< "INTRODUCE UNA CADENA: ";
cin>> cadena;
break;
}
} while (opc!=4);
[code/]
[MOD] para publicar codigo usar las etiquetas GeSHi
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. :-X