Visual C++ .NET - Cronometro c++

 
Vista:
sin imagen de perfil

Cronometro c++

Publicado por abraham (1 intervención) el 16/09/2015 05:21:10
Hola programadores

me podrian ayudar?

Tengo que hacer un cronometro que haga cuando presione una tecla inicie, se pause, se reinicie y se salga, ya tengo el codigo del cronometro solo me hace falta lo de las teclas, si alguien me puede ayudar se lo agradeceria. por favor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de cronómetro con teclas en Visual C++

Publicado por Alejandro (265 intervenciones) el 13/02/2024 23:28:13
¡Claro, estaré encantado de ayudarte! Para lograr lo que necesitas, puedes utilizar la biblioteca `<conio.h>` en C++ para detectar las teclas presionadas sin la necesidad de presionar Enter.

Aquí hay un ejemplo simple de un cronómetro que inicia, pausa, reinicia y sale cuando se presionan teclas específicas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <conio.h>
#include <chrono>
#include <thread>
 
using namespace std;
 
class Cronometro {
public:
    void iniciar();
    void pausar();
    void reiniciar();
    void salir();
    void ejecutar();
 
private:
    bool enEjecucion;
    chrono::steady_clock::time_point inicio;
    chrono::steady_clock::duration tiempoPausado;
};
 
void Cronometro::iniciar() {
    inicio = chrono::steady_clock::now();
    enEjecucion = true;
}
 
void Cronometro::pausar() {
    if (enEjecucion) {
        tiempoPausado += chrono::steady_clock::now() - inicio;
        enEjecucion = false;
    }
}
 
void Cronometro::reiniciar() {
    if (!enEjecucion) {
        inicio = chrono::steady_clock::now();
        enEjecucion = true;
    }
}
 
void Cronometro::salir() {
    enEjecucion = false;
}
 
void Cronometro::ejecutar() {
    while (enEjecucion) {
        system("cls");  // Limpia la pantalla (Windows)
 
        chrono::steady_clock::duration tiempoTranscurrido = chrono::steady_clock::now() - inicio - tiempoPausado;
        int segundos = chrono::duration_cast<chrono::seconds>(tiempoTranscurrido).count();
 
        cout << "Cronómetro: " << segundos << " segundos" << endl;
        cout << "Presiona 'i' para iniciar, 'p' para pausar, 'r' para reiniciar, 's' para salir." << endl;
 
        // Espera un segundo antes de volver a mostrar el tiempo
        this_thread::sleep_for(chrono::seconds(1));
    }
}
 
int main() {
    Cronometro cronometro;
    char tecla;
 
    do {
        tecla = _getch();  // Captura una tecla sin necesidad de presionar Enter
 
        switch (tecla) {
            case 'i':
                cronometro.iniciar();
                break;
            case 'p':
                cronometro.pausar();
                break;
            case 'r':
                cronometro.reiniciar();
                break;
            case 's':
                cronometro.salir();
                break;
        }
    } while (tecla != 's');
 
    cronometro.ejecutar();
 
    return 0;
}

Este código utiliza `_getch()` de `<conio.h>` para capturar teclas sin necesidad de presionar Enter. Puedes ajustar este ejemplo según tus necesidades específicas. ¡Espero que te sea de ayuda, tocayo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar