C/Visual C - Ayuda ! no puedo eliminar bucle infinito

 
Vista:
sin imagen de perfil

Ayuda ! no puedo eliminar bucle infinito

Publicado por Gabriel (1 intervención) el 08/09/2015 03:57:52
Hola! se me genera un bucle infinito luego de contestar si quiero realizar otra operacion
por favor ayuda!

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
40
41
42
43
44
45
#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
	//Declaracion de variables 
	int importe;
	int importeFin;
	int desc;
	int numDesc;
	int numImp;
	int porcent;
	int otraOp;
	//Inicio
	numImp=0;
	numDesc=0;
	do {
		do {
			cout<<"Ingrese importe";
			cin>>importe;
		}while(importe<=0);
		numImp=numImp+1;
 
 
		if (importe>850)
		{   desc=importe*0.05;
		importeFin=importe-desc;
		numDesc=numDesc+1;
		cout<<"El importe final es:  $"<<importeFin<<" con un descuento de: $"<<desc<<endl;
		}
		else
			cout<<"el importe final es:  $"<<importe<<" .No tiene descuento"<<endl;
 
 
	do{
		cout<<"¿Quiere realizar otra operacion? S(SI)o N(NO)";
		cin>>otraOp;
 
	}while (otraOp !='S' or otraOp != 'N');
 
	}while (otraOp !='N');
	porcent=(numDesc*100)/numImp;
	cout<<"Se hicieron un total de"<<numImp<<"importes.De los cuales un"<<porcent<<"tuvo descuento"<<endl;
 
	return 0;
}
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
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda ! no puedo eliminar bucle infinito

Publicado por aguml (272 intervenciones) el 09/09/2015 03:15:49
OR no es asi en C/C++. Es una doble barra vertical para condicional || o una sola barra para operador binario | .
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

Ayuda ! no puedo eliminar bucle infinito

Publicado por Jorge (4 intervenciones) el 24/10/2015 23:13:49
En realidad puedes escribir "or" o "and" por un tema de compatibilidad con viejos teclados.

El problema es que esta usando una condicion OR aqui:
while (otraOp !='S' or otraOp != 'N');

que SIEMPRE se va a evaluar a TRUE. Aunque otraOp sea 'S' o 'N', basta con que una de las dos sea TRUE para que el OR sea TRUE.
Solucion:

while (otraOp !='S' && otraOp != 'N');
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