Autor
|
Tema: Presentacion y pequeña duda en c++ (Leído 2,761 veces)
|
torralbita
Desconectado
Mensajes: 4
|
Buenas! actualmente estoy estudiando Ingenieria de Computadores y me encanta todo lo relacionado con la programació, linux etc... Hace muchos años que os sigo pero nunca me ha dado por registrarme. Me gustaría pediros consejo acerca de un código que tengo entre manos para mi clase de programación, me está dando muuucho la lata. Tengo que leer y escribir mediante ofstream e ifstream en un txt con usuarios y contraseñas para, una vez logueado, poder jugar a un juego. El problema que tengo es que si fallo la contraseña 2 veces (por ejemplo) y la introduzco bien la tercera vez no hace nada! debería de poder acceder al juego. Pego parte del código por si alguien pudiese echarme una mano. Puedo poner el código completo y funcional si hiciese falta. Mil gracias de antemano!! Saludos. cout << "Por favor, introduce tu apodo: "; cin >> apodo; cout << "Contraseña: "; cin >> password;
lecturareg.open("registro.txt"); escrituratmp.open("tmp.txt");
do { lecturareg >> d; escrituratmp << d << endl;
if(d == apodo){ lecturareg >> d; escrituratmp << d << endl; if(d == password) found = true; else { for(i = 1; i <= 2; i++) { cout << "Contraseña incorrecta! Vuelve a intentarlo: "; cin >> password; } if(i == 3) { cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl; opmenu = 0; } } } } while(found == false && d != "XXX");
lecturareg.close(); escrituratmp.close();
if(found == false && i == 0) { lecturatmp.open("tmp.txt"); escriturareg.open("registro.txt");
do { lecturatmp >> d;
if(d != "XXX") escriturareg << d << endl; else escriturareg << apodo << endl << password << endl << "XXX"; } while(d != "XXX");
}
lecturatmp.close(); escriturareg.close();
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
El problema que tengo es que si fallo la contraseña 2 veces (por ejemplo) y la introduzco bien la tercera vez no hace nada! debería de poder acceder al juego. for(i = 1; i <= 2; i++) { cout << "Contraseña incorrecta! Vuelve a intentarlo: "; cin >> password; } if(i == 3) { cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl; Ya lo dice el código, a la tercera:Lo siento, pero has fallado demasiadas veces. No puedes jugar. ¿O estas preguntando otra cosa?
Saluditos!.
|
|
« Última modificación: 7 Diciembre 2012, 19:49 pm por leosansan »
|
En línea
|
|
|
|
dato000
Desconectado
Mensajes: 3.034
|
Exacto, el problema en esta parte del codigo al parecer (al menos para esta sección de tu programa) radica en que dejas la valoracion del condicional por fuera del ciclo, y tomas "i" como un argumento global, pero una vez termina el for, "i" deja de ser utilizable para este proceso. Yo realmente lo haria con un do-while, pero eso es solo gustos, solo haz un ciclo con mas de tres repeticiones, yo le pongo cinco, me gusta ese numero. for(i = 1; i <=5 ; i++) { cout << "Contraseña incorrecta! Vuelve a intentarlo: "; cin >> password; if(i >= 3) { cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl; break; } }
|
|
|
En línea
|
|
|
|
torralbita
Desconectado
Mensajes: 4
|
Muchísmas gracias a ambos! he probado a modificar el código pero no hay forma. Sigue sin pillar la contraseña una vez se ha introducido mal, me explico. 1º - Creo un nuevo usuario "prueba" con su contraseña "prueba". 2º - Accedo al programa e intento loguearme poniendo mal dos veces la contraseña. 3º - Al tercer intento introduzco la contraseña correcta pero no me la pilla. Será mucho pedir pero os dejo el zip con el cpp y los txt corresponidentes por si pudiérais echarle un ojo a esa parte. https://dl.dropbox.com/u/53489612/main.zipSaludetes!
|
|
« Última modificación: 7 Diciembre 2012, 23:56 pm por torralbita »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
He cambiado el for, que no tenía mucho sentido, por un while. No me termina de convencer el código, pero hace lo que quieres:do { lecturareg >> d; escrituratmp << d << endl; if(d == apodo){ lecturareg >> d; escrituratmp << d << endl; if(d == password){ found = true; i=0; while(found == false){ i++; cout << "Contraseña incorrecta! Vuelve a intentarlo: "; cin >> password; if(d == password) found = true; if(found == false && i == 2){ cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl; return 1; } } } } while(found == false && d != "XXX" );
Saluditos!.
|
|
« Última modificación: 8 Diciembre 2012, 16:40 pm por leosansan »
|
En línea
|
|
|
|
torralbita
Desconectado
Mensajes: 4
|
leosanan, mil gracias compañero! ahora funciona tal y como quería!! no tengo ni idea por que usé un for en lugar de un while.
¿Se ve muy mal el código? nuestro profesor nos dijo que usáramos lo que habíamos dado en clase y nos liásemos con cosas extrañas.
Lo dicho, muchísimas gracias por la ayuda, me ha quedado más claro como funciona.
Buen finde!
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
FIJATE QUE HE REEDITADO EL CODIGO ¡ ¡ ¡ ¡
|
|
|
En línea
|
|
|
|
torralbita
Desconectado
Mensajes: 4
|
Lo acabo de ver compañero! el caso es que el registro de nuevos usuarios funcionaba bien con lo que me habías comentado antes de la edición, lo miraré igualmente. Por cierto, el "return 1" ¿se podría cambiar por algún equivalente? Mil gracias por las molestias tomadas. Un saludo.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Por cierto, el "return 1" ¿se podría cambiar por algún equivalente?
Es una forma de salir del programa, como el "return 0", e indica una salida correcta o prevista. Podría usarse exit (), creo que con la librería stdlib, pero para gustos colores. Saluditos!.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Presentación y duda
Sugerencias y dudas sobre el Foro
|
Trabubu
|
7
|
5,253
|
3 Septiembre 2007, 22:33 pm
por Freeze.
|
|
|
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
|
revenge1252
|
9
|
10,645
|
13 Febrero 2008, 21:41 pm
por revenge1252
|
|
|
presentacion-y una duda
Redes
|
jessy6699
|
1
|
1,756
|
18 Julio 2011, 12:16 pm
por madpitbull_99
|
|
|
Presentación y duda.
Dudas Generales
|
raveneus
|
1
|
1,906
|
6 Septiembre 2013, 22:37 pm
por TrashAmbishion
|
|
|
Presentacion + Duda web
Desarrollo Web
|
Varito9
|
1
|
1,702
|
18 Marzo 2014, 17:59 pm
por Mitsu
|
|