Problema con reloj

Iniciado por MiguelSanchez1703, 19 Marzo 2017, 20:25 PM

0 Miembros y 1 Visitante están viendo este tema.

MiguelSanchez1703

Código (cpp) [Seleccionar]
#include <iostream>
#include <thread>
#include <chrono>

#ifdef _WIN32
#define CLEAR "cls"
#else
#define CLEAR "clear"
#endif

using namespace std;
using namespace this_thread;
using namespace chrono;

void verTiempoActual ();

int main () {
       verTiempoActual();

       return 0;
}

void verTiempoActual () {
char Decision;
system (CLEAR);
cout << "VER EL TIEMPO Y LA FECHA ACTUALES" << endl;
cout << "--- -- ------ - -- ----- --------" << endl;
system_clock::time_point Actual = system_clock::now();
time_t mostrarTiempo;
mostrarTiempo = system_clock::to_time_t (Actual);
cout << "Ahora estamos en: " << ctime(&mostrarTiempo) << endl;
cout << "\nPonga 'B' para ir al menu o 'E' para salir: ";
sleep_for (seconds(1));
verTiempoActual();
cin >> Decision;
if (Decision == 'B' or Decision == 'b') {
main();
}else if (Decision == 'E' or Decision == 'e') {
Salir();
}else{
cout << "Ponga una opcion valida" << endl;
}
}


Hola, en esta parte del codigo, no se como hacer para poder introducir una b o una e mientras el codigo sigue su curso, es decir, mientras el codigo va añadiendo un segundo a la hora, poder introducirle una orden, Gracias

ivancea96

Cuando tratas de leer entrada por la consola, el código se detiene a esperarla.

Tendrías que utilizar threads. Pero no te recomiendo ponerte con eso ahí (no vale la pena ese trabajo por el reloj). Yo de ti, trataba de evadir ese problema como puedas y proseguir.

La respuesta corta: no es algo "trivial".

Y como detalle, eso de llamar al main desde una función (o desde el propio main, vaya), deberías evitarlo. Puedes hacerlo, pero no es lo ideal.

MAFUS

Bajo Linux utiliza el termios. Pones en terminal en modo no canónigo y sin esperas. Entonces un getchar no bloquea el terminal, no sé si funciona para cin.
Si usas windows ni idea.