sábado, 28 de febrero de 2015

Cronometro de consola HH:MM:SS en C/C++

Hola, volviendo de vacaciones y con el objetivo de mi nuevo proyecto tuve la necesidad de crear un cronometro en C, el codigo no esta depurado y es solo un beta pero le puede ser util a alguien.



//Cronometro test
/*
+Autor: Lautaro Linquiman
+Fecha y Hora: 28/02/2015
+Licencia: GPL 3
*/
#include <stdio.h> // printf, scanf
#include <stdlib.h> // system
#include <time.h> // time

void sleep(unsigned int mseconds);
int main(){
 int iniciar = 0, v = 0, segundos = 0,
  sec = 0, min = 0, hor = 0;
 clock_t tiempoDeInicio, tiempoAcual;
 printf("Pulsa 1 y enter para iniciar el cronometro:");
 while(!iniciar){
  /* Inicia un bucle infinito hasta que se ingrese el valor 1 */
  scanf("%d", &v);
  if(v == 1){
   iniciar = 1;
   tiempoDeInicio = time(NULL); // Obtiene el tiempo a la hora de iniciar el cronometro - Variable de referencia
  }
 }

 while(1){
  /* Se inicia el cronometro */
  tiempoAcual = time(NULL); // Obtiene el tiempo para ser comparado con la variable de refencia
  segundos = (tiempoAcual-tiempoDeInicio); // Se obtiene la cantidad de segundos
  
  if(segundos < 60){ //Comprueba que la cantidad de segundos sea menor a 60 segundos
   sec = segundos;
  }else if(segundos >= 60){ //Si los segundos son mayores a 60 se obtene la cantidad de minutos y la cantidad de segundos
   min = segundos/60; //Cantidad de minutos
   sec = segundos%60; //Cantidad de segundos
  }
  if(min >= 60){ // SI la cantidad de minutos es mayos o igual a 60 se obtiene la cantidad de horas
   hor = min/60;//Cantidad de horas
   min = min%60;//Cantidad de minutos
  }
  /* Estas comparaciones logicas formateas el texto para que siempre sea 00:00:00 
  + No hace falta explicarlo ¿ O si ?*/
  if(sec < 10 && min < 10 && hor < 10){
   printf("Horas 0%d:0%d:0%d", hor, min, sec);
  }
  if(sec >= 10 && min < 10 && hor < 10){
   printf("Horas 0%d:0%d:%d", hor, min, sec);
  }
  if(sec >= 10 && min > 10 && hor < 10){
   printf("Horas 0%d:%d:%d", hor, min, sec);
  }
  if(sec >= 10 && min >= 10 && hor >= 10){
   printf("Horas %d:%d:%d", hor, min, sec);
  }
  sleep(1000); //Genera una demora en la ejecucion de 1 segundo para evitar una sobre carga
  system("cls"); // Borra la consola
 }
 return 0;
}

void sleep(unsigned int mseconds)
{
    clock_t goal = mseconds + clock();
    while (goal > clock());
}

No hay comentarios:

Publicar un comentario