Autor
|
Tema: Duda (Leído 5,065 veces)
|
Caster
|
|
Re: Duda
« Respuesta #10 en: 22 Septiembre 2012, 21:34 pm » |
|
He leido eso y no he podido evitar contestar, nunca useis system("PAUSE"), repito nunca, es llamar al sistema para hacer una pausa, como consejo es mejor que eviteis esa pausa, echadle un vistazo a las chinchetas, hay un post que habla sobre esto.
|
|
|
En línea
|
|
|
|
Stakewinner00
|
|
Re: Duda
« Respuesta #11 en: 22 Septiembre 2012, 21:35 pm » |
|
una pregunta, es que como yo aprendo por mi cuenta sin uni pues hay cosas que me salto para que sirve los ;; de gracias PD: He leido eso y no he podido evitar contestar, nunca useis system("PAUSE"), repito nunca, es llamar al sistema para hacer una pausa, como consejo es mejor que eviteis esa pausa, echadle un vistazo a las chinchetas, hay un post que habla sobre esto.
por que no se tenia que usar? creo que era por que hacia correr al programa lento y tenia menos compatibilidad
|
|
|
En línea
|
|
|
|
djdac3
Desconectado
Mensajes: 10
|
|
Re: Duda
« Respuesta #12 en: 22 Septiembre 2012, 21:36 pm » |
|
el system("PAUSE"); es el ultimo recurso, ya que probé con cin.peek, cin.ignore, get.char, ninguno me sirvió y no se porque.
los ;; en el for es para que sea un ciclo infinito
|
|
|
En línea
|
|
|
|
xv0
Desconectado
Mensajes: 1.026
|
|
Re: Duda
« Respuesta #13 en: 22 Septiembre 2012, 22:50 pm » |
|
Hola el system("PAUSE"); es el ultimo recurso, ya que probé con cin.peek, cin.ignore, get.char, ninguno me sirvió y no se porque.
los ;; en el for es para que sea un ciclo infinito
No programo en C++ ni en Windows, para hacer una pausa o "bloquear" la ejecución tienes la función sleep, el tiempo se define en segundos. Un saludo P.D: Yo no pondria un for, lo dejaria así:
|
|
|
En línea
|
|
|
|
DickGumshoe
|
|
Re: Duda
« Respuesta #14 en: 22 Septiembre 2012, 22:59 pm » |
|
No se pausa porque con cin>>mesa;
dejas "basura" en el buffer del teclado, y cin.peek();
en este caso lo que hace es limpiar dicho buffer. Para solucionarlo, solo tienes que poner dos veces cin.peek();
(u otro similar). El primero limpiará el buffer, y el segundo pausará el programa. Un saludo.
|
|
|
En línea
|
|
|
|
Caster
|
|
Re: Duda
« Respuesta #15 en: 23 Septiembre 2012, 12:50 pm » |
|
Prueba con este: #include <iostream> #include <stdlib.h> using namespace std; int main() { int mesa; for(;;){ cout<<"Ingrese el mes actual"<<endl; cin>>mesa; if(mesa>=1 && mesa<=12) break; else{ cout<<"El mes que ingreso no es valido, inrese un dato valido"<<endl; cout<<"Presione enter para continuar"<<endl; cin.get(); cin.get(); system("cls"); } } cin.get(); return 0; }
|
|
|
En línea
|
|
|
|
fary
|
|
Re: Duda
« Respuesta #16 en: 23 Septiembre 2012, 13:57 pm » |
|
Hola No programo en C++ ni en Windows, para hacer una pausa o "bloquear" la ejecución tienes la función sleep, el tiempo se define en segundos. Un saludo P.D: Yo no pondria un for, lo dejaria así: En code::blocks (y me supongo que mas compiladores) da lo mismo poner una cosa que otra porque genera el mismo código ensamblador: Con while: MOV DWORD PTR SS:[ESP+C],0 MOV DWORD PTR SS:[ESP+8],0 MOV DWORD PTR SS:[ESP+4],0 MOV DWORD PTR SS:[ESP],0 CALL <JMP.&USER32.MessageBoxA> SUB ESP,10 JMP SHORT bucle_wh.0040132E
Con for: MOV DWORD PTR SS:[ESP+C],0 MOV DWORD PTR SS:[ESP+8],0 MOV DWORD PTR SS:[ESP+4],0 MOV DWORD PTR SS:[ESP],0 CALL <JMP.&USER32.MessageBoxA> SUB ESP,10 JMP SHORT bucle_wh.0040132E
El equivalente en C While: #include <windows.h> int main() { while(1) { MessageBoxA(0,0,0,0); } return 0; }
for: #include <windows.h> int main() { for (;;) { MessageBoxA(0,0,0,0); } return 0; }
saludos!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
xv0
Desconectado
Mensajes: 1.026
|
|
Re: Duda
« Respuesta #17 en: 23 Septiembre 2012, 16:25 pm » |
|
Hola mDrinky, gracias por el dato, esto me viene bien por que estoy empezando con ASM.
Solo dije eso porque for se suele utiliza para bucles definidos, ya sabes iniciación de la variable, condición, incremento o decremento, por eso me parecio más correcto para un bucle infinito usar while. Como genera lo mismo ya veo que no es importante.
P.D: GCC me genero exactamente lo mismo.
Un saludo
|
|
|
En línea
|
|
|
|
fary
|
|
Re: Duda
« Respuesta #18 en: 23 Septiembre 2012, 18:37 pm » |
|
Hola mDrinky, gracias por el dato, esto me viene bien por que estoy empezando con ASM.
Solo dije eso porque for se suele utiliza para bucles definidos, ya sabes iniciación de la variable, condición, incremento o decremento, por eso me parecio más correcto para un bucle infinito usar while. Como genera lo mismo ya veo que no es importante.
P.D: GCC me genero exactamente lo mismo.
Un saludo
Sí, en realidad casi nadie en C usaría un for para hacer un bucle infinito. De hecho queda asta feo, no?. Pero cosas como estas demuestran que no siempre un código bonito en C pueda funcionar mejor que un código feo un saludo!
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
|
|