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

xplode_me

[Resolvido] Converter segundos em horas

9 mensagens neste tópico

Ola!

O meu router novo da-me o valor de tempo da ligaçao actual em segundos (enfim!).

Com este programinha rapido pretendo começar com as bases do C e ao mesmo tempo fazer algo util!

#include <stdio.h>
/* Converter o valor em segundos dado pelo router
    para um valor em horas! (Da mais jeito! ) */

int secondsToHours()
{
int seconds;
int hours;

scanf("%d", &seconds);		
hours = (seconds/3600);

printf("Já passaram, ");
printf("%d", hours);
printf(" horas desde o último reboot do router!\n"); 
return 0;
	}


float main()
	{
int seconds;

secondsToHours(seconds);
	}

A questao que se poe eh: Eu quero o valor das horas num formato "1.5 horas" ou seja, com 1 casa decimal.

Se puser os tipos como double fico com 6 dig de precisao o que nao quero... Please help me! ;)

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pah em Python (que me dizem que é mt parecido com C) há uma funçao que escolhe o nº de casas decimais a utilizar

printf("%.1d", hours); // para 0 espaços e 1 casa decimal :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nhef... N dá :D

Já me disseram pa fazer isso, e q funciona em C, mas ou tou a enterrar ou n ta a dar :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
/* Converter o valor em segundos dado pelo router
    para um valor em horas! (Da mais jeito! ) 
Changelog:
V1.0 - Versao inicial
V1.1 - Horas devolvidas no formato h.hh (2 casas decimais) */

float secondsToHours()
{
float seconds;
float hours;

scanf("%f", &seconds);		
hours = (seconds/3600);

printf("Já passaram, \n");
printf("%.2f", hours);
printf(" horas desde o último reboot do router!\n"); 
return 0;
	}


float main()
	{

secondsToHours();
	}

Já devolve o valor em h.hh :thumbsup: Agora é so converter a parte decimal para minutos et voilá :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os minutos sao

1,5H = 1H.30Min

1H já está definida agora só falta definir o 0,5, visto que 1,5-1 = 0,5

0,5 de 60Min, que em Matemática se traduz :

0,5 x 60 = 30

Ou seja, o .hh = .hhx60

Que resulta em : h.hh, sendo igual a 1.30 -> 1Hora e 30Minutos

Isto é uma das variadas maneiras de fazeres isto, havia uma maneira para aí pelo fórum :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nova versão, já faz aquilo a que me propus. Agora vou tratar de fazer isto comer com a variavel por argumento quando o executavel é chamado! :)

#include <stdio.h>
/* Converter o valor em segundos dado pelo router
    para um valor em horas! (Da mais jeito! ) 
Changelog:
V1.0 - Versao inicial
V1.1 - Horas devolvidas no formato h.hh (2 casas decimais)
V1.2 - Horas devolvidas no formato hh.mm */

float secondsToHours()
{
float seconds;
float hours;
float minutes;
scanf("%f", &seconds);		
hours = ((int)(seconds/3600));
minutes = ((((seconds/3600) - ((int)(seconds/3600)))*60));


printf("Já passaram, ");
printf("%.0f", hours);
printf(" horas e ");
printf("%.0f", minutes);
printf(" minutos desde o último reboot do router!\n");	
return 0;
	}


float main()
	{

secondsToHours();
	}

:biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém me pode ajudar a fazer isto?

Quero passar o valor dos segundos como argumento em vez de passar com o scanf.. Please help!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguém me pode ajudar a fazer isto?

Quero passar o valor dos segundos como argumento em vez de passar com o scanf.. Please help!

Assim:

float secondsToHours(float seconds)
{
....
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok. Esta parte ta feita, agora preciso duma ajuda a incluir o gtk e o C. Mas vou abrir outro topico porq o tema é diferente e pode interessar a mais pessoas!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora