Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
lousada

Relogio

Recommended Posts

lousada

Tou a pensar fazer um relogio mas sao muito novo em progrmação alguem podia fazer um para ver os codigos etc?

Share this post


Link to post
Share on other sites
zzee

Depois de obteres os valores dos minutos e horas, convém colocar isso num formato mais facil para tu trabalhares e o ideal é escreveres isso numa string, fiz aqui um pequeno código onde mostra por exemplo como podes escrever os valores numa string, e como podes escrever isso por exemplo na consola de forma suave, actualizando apenas o valor de 60 em 60s necessitando para isso 1o de sincronizar o processo...

#include <time.h>
#include <stdio.h>
#include <windows.h>

int main(void)
{
    time_t tempo;
    struct tm *data;
    char string[12] = "  :   horas";
    char caracter;
    
    printf("Espera para sincronizar o relógio");
    do{
    time(&tempo);
    }
    while(tempo%60!=0);
    printf("\r");
    printf("                                       ");
    printf("\r");
do{
    Sleep(60);
    time(&tempo);
    data=localtime(&tempo);
    
    caracter = (*data).tm_hour/10 + '0';
    string[0]=caracter;
    
    caracter = (*data).tm_hour%10 + '0';
    string[1]=caracter;
    
    caracter = (*data).tm_min/10 + '0';
    string[3]=caracter;
    
    caracter = (*data).tm_min%10 + '0';
    string[4]=caracter;
    
    if((tempo%60)==0)printf("%s \r",string);
}while(1);
    return 0;   
}

Share this post


Link to post
Share on other sites
lousada

acho que já estou a abusar da vossa ajuda mas podias explicar paço por paço cada código? se não foi chato sff

Share this post


Link to post
Share on other sites
zzee

Hmmm, ora bem aqui vamos ...

    time_t tempo;
    struct tm *data;

Isto aqui definete as variáveis que vais usar a partir da classe time.h

o time_h é um numero enorme que te diz o numero de segundos que passaram desde o dia 1 jan de 1970 axo eu, até ao momento em que tu fazes "load" desse valor.

o struct tm é um struct composto por dia, hora,minuto, mes etc td informação relativa ao tempo que se pode calcular a partir do numero de segundos que passaram desde 1970.

Para obter essa informação tens que usar estas funções da classe time.h

time(&tempo);
data=localtime(&tempo);

a função time date o tal nmeor de segundos e tem como argumento um ponteiro para time_t

e a função localtime faz-te os tais calculos a partir do numeor de segundos.

Depois para criar a string usas isto

caracter = (*data).tm_hour/10 + '0';
    string[0]=caracter;

caracter = (*data).tm_hour%10 + '0';
    string[1]=caracter;

na string tens que escrever digito por digito os valores das horas e minutos, e como as horas podem ir até  á unidade das dezenas o que se faz para encontrar o 1o algrismo(das dezenas) é ver qual é a parte inteira da divisão ( / ) das horas por 10 e para encontrar a unidade é pegar no resto da divisão das horas por 10 ( % ).

Para saberes qual o valor em ascii desse lagarismo para escreveres na string é muito facil, basta somares ao '0' ( valor ascii do zero) porque os algarismo vem todos seguidos na tabela de ascii.

Bem, o melhor que tens a fazer e começar a fazer programas em c, muito pequenos, para imprimir coisas ver como são feitas as operções matemáticas etc, porque se não estudares tu passo a passo n vais compreender as coisas ...

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.