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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


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

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Cronometro c++
« en: 22 Julio 2017, 13:38 pm »

Hola, estoy intentando hacer un programa muy simple en el que debes traducir a binario un numero que te da la máquina, me gustaría que cronometrase el tiempo que tardas en hacerlo. Mi código hasta el momento es el siguiente:
Código:
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <windows.h>





using namespace std;

int numero = 0;
int MenuPrincipal();
int CuatroBits(),OchoBits(),DoceBits();
void cronometro();
int Vimag1 = 0, tiempo;


char nombre[20];

int main(){

/* ifstream openFile(Record.txt);
if (openFile.is_open()){ //checking for existence of file
    string Record; //string to store file line
    getLine(openFile, Record); //gets a line from the file
    openFile.close(); //closes file after done
}*/
MenuPrincipal();
}

int MenuPrincipal(){


int D;

cout<<"Bienvenido a Quien quiere ser binario Game of the year edition \n";
cout<<"Como te llamas?\n";
cin >> nombre;
cout<<"Bienvenido, "<< nombre <<"\n";
system("pause > NULL");
system("cls");

cout<<"******************************\n";
cout<<"** Nivel de dificultad:     **\n";
cout<<"** 1.  4-bits               **\n";
cout<<"** 2.  8-bits               **\n";
cout<<"** 3.  12-bits              **\n";
cout<<"**                          **\n";
cout<<"******************************\n";
cin >> D;

switch(D){

case 1 :

    CuatroBits();
    break;

case 2 :

OchoBits();
break;

case 3 :

    DoceBits();
    break;

default:

cout<<"ERROR: Introduzca un numero del 1 al 3\n";
MenuPrincipal();
break;
}

}

int CuatroBits(){
int Seguir=1, respuesta, numeroUsuario[4], RecordTiempo;

   
system("cls");

cout<<"4-bits                                       USER:"<< nombre <<"                 Record:                                    \n";
cout<<"\n";
cout<<"Esta bien, que comience el juego. Las reglas son muy simples, saldra un numero en la pantalla, el que consiga expresarloen binario en menos tiempo, gana.\n";
    cout<<"(Debes introducir digito por digito)\n";
   
system("pause > NULL");
    system("cls");
   
    do{
    int numero = 0;
    numero = rand() % 16;
    int tiempo=0;
   
    system("cls");
    cout<<"4-bits                                       USER:"<< nombre <<"                 Record:                                    \n"; 
    cout<<"Pulsa cualquier tecla, aparecera un numero y el contador comienzara\n";

system("pause > NULL");
system("cls");
cout<<"4-bits                                       USER:"<< nombre <<"                 Record:                                    \n"; 
cout<<numero<<"                                     tiempo:"<<tiempo<<"\n";
Vimag1 = 1;//la utilizo para que el cronometro empiece o pare
do{
tiempo++;
Sleep(1000);
   
    cin >> numeroUsuario[4];

if(numeroUsuario[4] == 1){

respuesta = respuesta + 8;
}

    cin >> numeroUsuario[4];
   
if(numeroUsuario[4] == 1){

respuesta = respuesta + 4;
}
cin >> numeroUsuario[4];

if(numeroUsuario[4] == 1){

respuesta = respuesta + 2;
}
cin >> numeroUsuario[4];

if(numeroUsuario[4] == 1){

respuesta = respuesta + 1;
}

        Vimag1 = 0;
        }while(Vimag1 = 1);

if (respuesta == numero){
cout<<"Has ganado!\n";
cout<<tiempo<<"\n";
if (tiempo > RecordTiempo){
RecordTiempo = tiempo;

}
}
else{
cout<<"Pierdes\n";
        cout<<"Usted dijo "<<respuesta<<" en vez de "<<numero<<" \n";
        cout<<tiempo<<"\n";
}



respuesta = 0;
cout<<"otra mas?\n";
cout<<"1. Si\n";
cout<<"2. No\n";
cin >> Seguir;


}while(Seguir == 1);
exit;
}

int OchoBits(){

cout<<"8-bits\n";
}

int DoceBits(){

cout<<"12-bits\n";
}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Cronometro c++
« Respuesta #1 en: 22 Julio 2017, 14:37 pm »

Si quieres saber el tiempo que ha pasado entre un punto y otro d ela ejecución, tienes clock() de la librería <ctime>, que retorna (usualmente), milisegundos:

Código
  1. #include <ctime>
  2.  
  3. int main(){
  4.    clock_t cl = clock(); // Milisegundos transcurridos hasta este momento
  5.  
  6.    // Pasa el tiempo...
  7.  
  8.    cout << (clock() - cl) << endl; // Tiempo ahora - tiempo anterior = tiempo transcurrido
  9. }

Como detalle, clock no retorna milisegundos, sino ticks del reloj. En Windows suelen ser milisegundos, pero no tiene por qué. Para tenerlo seguro, tienes la constante "CLOCKS_PER_SEC".


Como detalle final, tienes la librería chrono de C++11, que es muy completa para medir tiempos. La más completa de C++ probablemente. Aquí tienes una buena referencia de ella: http://www.cplusplus.com/reference/chrono/


En línea

sanxez1

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Cronometro c++
« Respuesta #2 en: 22 Julio 2017, 15:30 pm »

Muchas gracias, problema solucionado!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cronometro
Programación Visual Basic
miguecapo 2 2,067 Último mensaje 1 Julio 2005, 17:12 pm
por CodeName47/GEDZAC
Cronometro
Electrónica
abderraman 0 2,068 Último mensaje 8 Marzo 2006, 20:59 pm
por abderraman
cronometro
Programación Visual Basic
maxnet 6 2,874 Último mensaje 24 Marzo 2006, 06:42 am
por juanjoxx
Cronometro « 1 2 3 »
Programación Visual Basic
kikev10 20 9,134 Último mensaje 8 Agosto 2006, 17:03 pm
por elmaro
Cronometro en VBS :p
Scripting
Novlucker 4 7,777 Último mensaje 28 Junio 2008, 02:05 am
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines