Dev - C++ - error de Loop Infinito en Menu de Programa

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

error de Loop Infinito en Menu de Programa

Publicado por Jorge (2 intervenciones) el 05/07/2018 20:44:13
Estoy intentando hacer un programa en c++ donde en caso de que la opción introducida por el usuario no sea válida, le permita volver a meter alguna opción en vez de que se cierre el programa, además de que le permita volver a ejecutar el programa si quiere hacer una operación diferente, el problema está en que si entra al loop de "opción no válida" no sale de ahi aunque se introduzca una opción válida :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
main(void){
 
	int opcionEn;
	char NSCa;
	cout << "programa para encontrar o evaluar numeros triangulares." << endl << endl;
 
	do{
 
		cout << "1. Encontrar  el numero triangular \"x\" dado por \"n\" numero de repeticiones " << endl;
		cout << "2. Saber si un numero es triangular" << endl << "3. Conocer el numero triangular mas cercano a \"x\" numero" << endl;
		cout << "introduce el numero de operacion que deseas hacer: ";
		cin >> opcionEn;
 
		if((opcionEn==1) || (opcionEn==2) || (opcionEn==3))
			menuFnEn(opcionEn);
 
		else{
			//============    No sale de este Loop    =============//
 
			while((opcionEn != 1) || (opcionEn != 2) || (opcionEn != 3)){
				cout << endl <<"la opcion no es valida, vuelve a intentar: ";
				cin >> opcionEn;
 
				if((opcionEn==1) || (opcionEn==2) || (opcionEn==3)){
 
					menuFnEn(opcionEn);  //= Se ejecuta, pero regresa al inicio del loop en vez de salir
 
				}
 
			}
 
		}
 
		cout << endl << endl <<  "deseas hacer algo mas? (s/S)";
		cin >> NSCa;
	}while((NSCa=='s') || (NSCa=='S'));
 
	cout << "presiona enter para cerrar el programa";
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

error de Loop Infinito en Menu de Programa

Publicado por Tom (54 intervenciones) el 06/07/2018 09:57:28
En este while, la condicion siemre es true:
while((opcionEn != 1) || (opcionEn != 2) || (opcionEn != 3)){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

error de Loop Infinito en Menu de Programa

Publicado por Jorge (2 intervenciones) el 10/07/2018 17:50:28
agradezco profundamente que te hayas tomado el tiempo para comentar, pero lo que realmente no me explico es cómo salir del loop, se necesita una condición booleana o cómo le indico al programa que ya puede terminar ese loop?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar