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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Parar un bucle for pulsando una tecla?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Parar un bucle for pulsando una tecla?  (Leído 8,889 veces)
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: ¿Parar un bucle for pulsando una tecla?
« Respuesta #10 en: 22 Agosto 2018, 14:35 pm »

Hola  la solucion seria la siguiente xd

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. char input=0;
  8.  
  9. cout << "Presione d para ejecutar ciclo" << endl;
  10. while(1){
  11. cin >> input;
  12. if(input=='d'){
  13. ejecutar ciclo();
  14. }
  15. else{
  16. ejecutar_otras_acciones();
  17. }
  18. }
  19. system("pause");
  20. return 0;
  21. }


En línea

7w7
ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: ¿Parar un bucle for pulsando una tecla?
« Respuesta #11 en: 22 Agosto 2018, 18:05 pm »

Getch es para detectar si se ha pulsado una tecla o no. No entiendo la función que tendría en el hecho de detener el programa. ThunderCls, he usado tu código y no funciona.

El codigo de ejemplo que te puse fue solo una guía, igual no lo he probado,  aunque supongo que lo probaste dentro de un hilo diferente al winmain, cierto?. Como perfectamente te ha explicado NEBIRE, C++ no es un lenguaje trivial, así que no creas que seras un experto o que lograras codear todo lo que desees en un par de semanas.
La función cin.get() es una función síncrona, lo que significa que tu hilo principal se bloqueara al llamar a dicha función y solo continuara una vez haya leído una linea completa de la consola. Hasta donde se C++ no posee ninguna funcion estandar de entrada sin bloqueo del hilo principal. Las implementaciones de dichas funciones son dependiente de plataforma, en tu caso la solución al problema es fundamentalmente dependiente del sistema operativo, si en tu caso se trata de Windows, pudieras revisar algunas de estas opciones:

1- Instalar un hook de teclado con SetWindowsHookEx
https://stackoverflow.com/questions/10049764/detecting-escape-keypress-in-console-mfc-program
2- Usar un Control Handler Función con SetConsoleCtrlHandler
https://docs.microsoft.com/en-us/windows/console/registering-a-control-handler-function
3- Usar la función GetAsyncKeyState en un hilo separado a winmain
4- Usar _kbhit/_getch en un loop
https://stackoverflow.com/questions/6171132/non-blocking-console-input-c

*- Una opción multiplataforma seria usar la función cin.get() en un hilo separado del hilo de ejecución principal (como mi primer mensaje)

Para Linux y demás SO podrías hacer tus búsquedas en google: "Non-blocking console input C++"


En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
enriquemesa8080

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: ¿Parar un bucle for pulsando una tecla?
« Respuesta #12 en: 23 Agosto 2018, 00:26 am »

Hola, yo aconsejo que pongas un thread de ejecucion aparte donde puedas mantener en uno el conteo del for (tal vez el hilo nuevo), y la comprobacion de si se està presionando la tecla en otro hilo. Quizas en el mismo main().

Busca como usar los threads. Ya que lo que tu necesitas es sencillo es cuestion de usar la API plana de Windows.

Usa windows.h.

Yo tengo un blog donde voy subiendo informacion. No te resolverè tu problema con codigo, pero si puedo darte tips para que mejores. Pendiente del blog.

enriquemesa8080.blogspot.com
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Parar bucle
Java
H4CKO_R 5 4,677 Último mensaje 27 Noviembre 2008, 22:22 pm
por Amerikano|Cls
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,628 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
Detectar tecla presionada y si es tal tecla hacer tal cosa
Programación Visual Basic
Wiidos 3 6,211 Último mensaje 20 Marzo 2011, 19:15 pm
por raul338
Necesito parar un proceso de MSDOS en cuanto pulso una tecla
Programación Visual Basic
antecessor 1 2,315 Último mensaje 11 Marzo 2015, 17:25 pm
por okik
salir de un bucle presionando la tecla ESC
Programación C/C++
kakshi 2 4,660 Último mensaje 4 Agosto 2019, 21:49 pm
por kakshi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines