Exercício 14: Escrever um programa no qual o usuário fornece a hora com 3 argumentos inteiros (hora, minutos e segundos) e uma função nSegundos fornece o número de segundos decorridos desde a meia-noite. Use esta função para que fornecidas duas horas, o programa calcule o tempo em segundos decorrido entre uma e outra (em princípio o usuário não precisa se preocupar em saber qual hora será subtraída de qual e o programa não deve fornecer um resultado negativo).
Passo 1
A questão pede um programa que receba duas horas (cada uma com hora, minuto e segundo) e calcule quantos segundos se passaram entre elas, usando uma função que converte uma hora em segundos desde a meia-noite. Vamos precisar entender como converter horas, minutos e segundos em um único valor de segundos e depois usar valor absoluto para não termos resultado negativo.
Passo 2
Definir a função nSegundos. A ideia central é que cada hora tem 3600 segundos e cada minuto tem 60 segundos. Então, dados hora (4563), minuto (m) e segundo (s), o total de segundos desde a meia-noite é:
Implementamos isso em C como:
int nSegundos(int h, int m, int s) {
return h*3600 + m*60 + s;
}
Passo 3
Ler as duas horas fornecidas pelo usuário. Vamos usar duas chamadas de leitura, cada uma pegando três inteiros. Por exemplo:
int h1, m1, s1, h2, m2, s2;
scanf("%d %d %d", &h1, &m1, &s1);
scanf("%d %d %d", &h2, &m2, &s2);
Passo 4
Converter cada hora em segundos usando a função nSegundos e armazenar em variáveis intermediárias. Ficamos com:
int t1 = nSegundos(h1, m1, s1);
int t2 = nSegundos(h2, m2, s2);
Passo 5
Calcular a diferença em segundos entre as duas leituras e garantir que o resultado não seja negativo. Para isso, usamos a função
abs
da biblioteca stdlib.h
:int diff = abs(t1 - t2);
Passo 6
Imprimir o resultado na tela. Basta usar:
printf("%d\n", diff);
E finalizar o programa com
return 0;
.Resposta
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
int nSegundos(int h, int m, int s) {
return h3600 + m60 + s;
}
return h3600 + m60 + s;
}
int main() {
int h1, m1, s1, h2, m2, s2;
// Leitura da primeira hora
scanf("%d %d %d", &h1, &m1, &s1);
// Leitura da segunda hora
scanf("%d %d %d", &h2, &m2, &s2);
int h1, m1, s1, h2, m2, s2;
// Leitura da primeira hora
scanf("%d %d %d", &h1, &m1, &s1);
// Leitura da segunda hora
scanf("%d %d %d", &h2, &m2, &s2);
int t1 = nSegundos(h1, m1, s1);
int t2 = nSegundos(h2, m2, s2);
int diff = abs(t1 - t2);
printf("%d\n", diff);
return 0;
}