elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Presentacion y pequeña duda en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Presentacion y pequeña duda en c++  (Leído 2,335 veces)
torralbita

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Presentacion y pequeña duda en c++
« en: 7 Diciembre 2012, 19:09 pm »

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.

Código:
	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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #1 en: 7 Diciembre 2012, 19:45 pm »


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.

Código:
				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;

Citar

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 Desconectado

Mensajes: 3.034



Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #2 en: 7 Diciembre 2012, 21:36 pm »

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.

Código
  1. for(i = 1; i <=5 ; i++) {
  2.        cout << "Contraseña incorrecta! Vuelve a intentarlo: ";
  3. cin >> password;
  4. if(i >= 3)
  5. {
  6. cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl;
  7.                                        break;
  8.                                }
  9. }
  10.  
En línea


torralbita

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #3 en: 7 Diciembre 2012, 23:43 pm »

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.zip

Saludetes!

« Última modificación: 7 Diciembre 2012, 23:56 pm por torralbita » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #4 en: 8 Diciembre 2012, 16:34 pm »

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:

Código
  1. do
  2. {
  3.        lecturareg >> d;
  4. escrituratmp << d << endl;
  5. if(d == apodo){
  6. lecturareg >> d;
  7. escrituratmp << d << endl;
  8. if(d == password){
  9.                    found = true;
  10.                    i=0;
  11.            while(found == false){
  12.                i++;
  13.                cout << "Contraseña incorrecta! Vuelve a intentarlo: ";
  14.                cin >> password;
  15.                if(d == password)
  16.                    found = true;
  17.                if(found == false && i == 2){
  18. cout << "Lo siento, pero has fallado demasiadas veces. No puedes jugar." << endl;
  19. return 1;
  20. }
  21.            }
  22.        }
  23.  
  24. } while(found == false && d != "XXX" );
Saluditos!.
« Última modificación: 8 Diciembre 2012, 16:40 pm por leosansan » En línea

torralbita

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #5 en: 8 Diciembre 2012, 16:40 pm »

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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #6 en: 8 Diciembre 2012, 16:41 pm »

Citar
FIJATE QUE HE REEDITADO EL CODIGO ¡ ¡ ¡ ¡
En línea

torralbita

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #7 en: 8 Diciembre 2012, 17:23 pm »



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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Presentacion y pequeña duda en c++
« Respuesta #8 en: 8 Diciembre 2012, 18:03 pm »


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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Presentación y duda
Sugerencias y dudas sobre el Foro
Trabubu 7 4,736 Último mensaje 3 Septiembre 2007, 22:33 pm
por Freeze.
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,764 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
presentacion-y una duda
Redes
jessy6699 1 1,450 Último mensaje 18 Julio 2011, 12:16 pm
por madpitbull_99
Presentación y duda.
Dudas Generales
raveneus 1 1,594 Último mensaje 6 Septiembre 2013, 22:37 pm
por TrashAmbishion
Presentacion + Duda web
Desarrollo Web
Varito9 1 1,401 Último mensaje 18 Marzo 2014, 17:59 pm
por Mitsu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines