Ir ao conteúdo

Posts recomendados

Postado

Oi, galera do Clube do Hardware!

Estou com uma dúvida num exercício da faculdade

A questão é a seguinte: "Escreva um programa que converta um intervalo de tempo dado em minutos, em horas, minutos e segundos. Por exemplo, se o tempo dado por 145,87 min, o programa deve fornecer 2h 25min e 52,2s.

Eu escrevi o programa e utilizei o valor dado pela questão para testar, mas não sei como faço a conversão correta para segundos

 

#include <stdio.h>
main()
{
    int min, horas, minutos, segundos;
    printf("Insira a quantidade de minutos: ");
    scanf("%d", &min);
    
    horas = min/60;
    minutos = min%60;
    segundos = //Aqui está minha dúvida, tentei diversas formas mas não consegui
    
    printf("Isso e igual a %dh, %dmin e %ds", horas, minutos, segundos);
}

 

Se puderem me ajudar, fico muito grato!

 

 

  • Curtir 1
Postado
#include <stdio.h>
main()
{
    int min, horas, minutos,segundos;
    printf("Insira a quantidade de minutos: ");
    scanf("%d", &min);
    
    horas = min/60;
    minutos = min%60;
    segundos = horas%minutos;
    
    printf("Isso e igual a %dh, %dmin e %ds", horas, minutos, segundos);
}

nao entendi aquele 52,2 ...

 

Calculei os segundos pegando o resto entre horas e minutos ...

  • Curtir 1
Postado

Uma observação você diz que que os minutos que o usuário informa podem ser fracionados porém armazena eles em uma variável inteira.

 

Talvez devido a observação acima a resposta do @WilliamNascimento tem um equivoco no calculo dos segundos que é representado pela fração.

 

Dito isso os cálculos seriam:

 

image.png.e6d5269bc7ae384fce11bfda8d4b1dc9.png

 

image.png.4bf169f4a845a58bfe69a8cff478cd55.png

 

image.png.a64a9e88a003820170470fc25e8850a3.png

 

E o algorítimo correto seria:

#include <stdio.h>

//Assinatura basica definida pelas regras do C11 http://c0x.coding-guidelines.com/5.1.2.2.1.html
int main(void)
{
    int horas, minutos;
    //Tipo correto de min e segundos de acordo com os requisitos
    float min, segundos;
    
    printf("Insira a quantidade de minutos: ");
    scanf("%f", &min);
    
    //Ao armazenar o resultado da operação em uma variável do tipo inteiro a fração é descartada
    horas = min / 60;
    //É necessário converter min para inteiro( (int)min ) para utilizar o operador de modulo
    minutos = (int)min % 60;
    //min - (int)min é utilizado para extrair somente a fração do valor
    //219,6 - 219 = 0,6
    //0,6 * 60 = 36 segundos
    segundos = (min - (int)min) * 60;
    
    //Você pode arredondar os segundos com %.1f onde 1 representa a quantidade casas demais que você deseja
    printf("Isso e igual a %dh, %dmin e %fs", horas, minutos, segundos);
    
    return 0;
}

Você pode conferir e testar em  https://ideone.com/sN7bis.

  • Curtir 1
Postado

Como você possui os minutos, você pode usar a famosa regra de 3 para calcular isso:

 

PS: Desculpe pelo o erro de digitação, na linha "Fazendo um regra de 3" era pra ser "Fazendo uma regra de 3"

1g8owsK.png

 

#include <stdio.h>

int main()
{
    int min, horas, minutos,segundos;
    printf("Insira a quantidade de minutos: ");
    scanf("%d", &min);
    
    horas = min / 60;
    minutos = min % 60;
    segundos = min * 60;
    
    printf("Isso e igual a %dh, %dmin e %ds", horas, minutos, segundos);
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...