Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda bucle

Estas en el tema de Duda bucle en el foro de C/C++ en Foros del Web. Hola, tenía una duda con este bucle, lo que debería hacer, es leer un archivo de mi disco E: hasta que encuentre al centinela "XXX" ...
  #1 (permalink)  
Antiguo 24/11/2012, 17:43
 
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Duda bucle

Hola, tenía una duda con este bucle, lo que debería hacer, es leer un archivo de mi disco E: hasta que encuentre al centinela "XXX" o hasta que lea una string que sea igual a la string introducida "apodo".

A ver si encontrais el fallo, porque por lo que puedo ver, nunca sale del bucle.



int partidasGanadas= 0;
int partidasPerdidas = 0;
int partidasEmpatadas = 0;
int contador = 0;
ofstream escribir_jugadores;
ifstream leer_jugadores;
ifstream leer_reglas;
ifstream leer_copia;
ofstream escribir_copia;
string reglas;
string apodo;
string apodoExistente;
string str;
string contraseña;
string contraseñaExistente;
string centinela = "XXX";
bool contrasenaValida = true;
int eleccion1 = 1;


cout << "Introduce tu apodo : ";
cin >> apodo;
cout << "Ahora introduce tu contraseña : ";
cin >> contraseña;

leer_jugadores.open("E:\\jugadores.txt");

if(leer_jugadores.is_open()){
leer_jugadores >> apodoExistente;

while((apodoExistente != centinela)||(apodoExistente != apodo)){
leer_jugadores >> apodoExistente;
}
}


Un saludo y gracias por adelantado.
  #2 (permalink)  
Antiguo 24/11/2012, 18:30
Avatar de cotolon  
Fecha de Ingreso: octubre-2012
Mensajes: 55
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: Duda bucle

supongamos que cuando el usuario ingresa Hola (apodo = Hola)

entra al while , pensemos que ya encontró el apodoExistente = Hola

entonces chequea el while

apodoExistente != centinela OR apodoExistente != apodo

Hola != XXX OR Hola != Hola

True OR False = True

es decir aunque encuentres el valor igual a XXX o a Hola siempre sera true, para cambiar eso cambia el OR por el AND.

Por ej: apodo = Hola centinela = XXX , encuentra apodoExistente = Hola

Hola != XXX AND Hola != Hola

True AND False = False (Deja de ejecutar el while)

En el caso q apodoExistente = XXX lo mismo

XXX!=XXX AND XXX!= Hola
False AND True = False (rompe el while)

y la unica forma que siga es que apodoExistente sea algo distinto por ej apodoExistente = Chao

Chao != XXX AND Chao != Hola
True AND True = True (sigue ciclo while)

Etiquetas: bucle, int, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:24.