Reloj en C

Iniciado por sinsombra_666, 25 Septiembre 2010, 18:31 PM

0 Miembros y 2 Visitantes están viendo este tema.

sinsombra_666

Bueno el caso es que creeo que esta bien, el problema es que no e consegido que el reloj deje de mostrar sus horas y minu y segundos anteriores, en la maldita shell haber si alguien me puede echar una manita.





#include <stdio.h>
#include <stdlib.h>




void reloj(int h,int m,int s){

int i,a;




for (; ;){ 
         
for (a=0; a<=61; a++){
   
sleep(1000);
s++;


if (s==60){

m++;
s = 0;           
           
}


if (m==60){

m = 0;
h++;           


           
}

if (h==24){

h = 0;

}
printf("\n");
printf(" H ");
printf("M ");
printf("S\n\n ");
printf("%i %i %i\n",h,m,s);



}

                           
}

   



main()
{

reloj(23,59,45);
     
  getch();

}


Ari Slash

#1
hola
indeta un poco tu codigo no se entiende nada
sino me equivoco la funcion sleep esta en windows.h? como te funciona?

para borrar pantalla puedes incluir la biblioteca conio.h y usar la funcion clrscr()
lo unico malo de esta solucion es que no es portable te funcionara solo bajo windows
tambien puedes usar system("cls")

y para linux puedes usar system("clear"), creo que por esto te funciona sleep sin la biblioteca porque lo usas en linux


saludos

Mr.Blue

#2
getch esta en conio.h. pero es mejor usar getchar (); que esta en stdio.h
sleep  no esta en stdlib? o en windows?


for (a=0; a<=61; a++)

aca deberia ser a<61 o a<=60  

PD: la hora no va a ser la correcta, mas q nada vas a ver el tiempo q el el programa esta corriendo.

Horricreu

sleep() es no es standard.

Saludos :P

sinsombra_666

umm me estays liando con las librerias, el codigo se copila y ejecuta perfectamente con esas librerias, pruevenlo en devc++9.9.2, lo de clrscr ya lo e provado, ya veo que no se entiende bien el codigo :



#include <stdio.h>
#include <stdlib.h>




void reloj(int h,int m,int s){  // aqui declaro la funcion con tres var tipo int hora, minuto y segundo

int i,a;  // declaro var locales para mi funcion, que se utilizan en los bucles




for (; ;){  // creeo un bucle infinito como padre

for (a=0; a<=61; a++){

sleep(1000); // hasta que no pase 1 segundo s o segundo no aumentara en 1
s++;


if (s==60){  // cuando s o segundo sea 60 aumenta m, minuto y s, segundo vuelve a cero, infinitamente

m++;
s = 0;          

}


if (m==60){  // cuando m, minuto llege a 60 vuelve a 0 y aumenta en 1 h, hora

m = 0;
h++;          



}

if (h==24){ // mas de lo mismo, ya si se comprende no

h = 0;

}
printf("\n");
printf(" H ");
printf("M ");
printf("S\n\n ");
printf("%i %i %i\n",h,m,s);



}


}
}  




main()
{

reloj(23,59,45); // invoco a la funcion h, hora m, minuto s, segundo

 getch();

}

// Creo que ya quedo claro



mas sobre el borrado de pantalla;

El problema con estas funciones es que al hacerlo en tiempo real (es obligatorio no se puede pausar) printf si que manda las var por pantalla, pero no se ven.


ejemplo;



clrsrc();

printf("\n");
printf(" H ");
printf("M ");
printf("S\n\n ");
printf("%i %i %i\n",h,m,s);  // no se veria nada


Ari Slash

#5
no le has asignado ningun valor a la variable i

edito: perdon por este comentario, me confundi estaba pensando en php xD

Horricreu

#6
Es que el código tiene montones de fallos que tu compilador nunca te dirá que están mal, porque el que usas es una birria.

Saludos :P

sinsombra_666

Citarno le has asignado ningun valor a la variable i

noo, el codigo en principio no se parecia nada a este, vamos con el que empeze por eso tal vez deje hay la var i que antes se utilizava en otro bucle for.


Citar
Es que el código tiene montones de fallos que tu compilador nunca te dirá que están mal, porque el que usas es una birria.

Explicate a mi no me vale que me digas que tiene montones de errores y que el copilador que lleva dev es malo, si no explicas porque ?¿?¡

Horricreu

A ver, por ejemplo:


  • Declaras main() en vez de int main(). En los compiladores antiguos no te dará error pero en los actuales, y buenos, sí. Recuerda que debe retornar un entero.
  • No sé porque incluyes la librería stdlib. No la necesitas.
  • Utilizas una función de la librería conio sin haber declarado dicha librería.
  • Tampoco sé porque no te da error en la función sleep().

Saludos :P

[L]ord [R]NA

No se pero te recomiendo que leas un tuto o un libro porque al parecer fuiste recogiendo codigo... es bien extraño que alguien añada una libreria que no va a utilizar y deje fuera otra que si necesita.