Ir ao conteúdo

C Não acho o erro no programa


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Me ajudem não acho o erro no meu programa:

 3 - De um modo geral, as ligações telefônicas são cobradas pelas suas durações.
    O sistema registra os instantes em que a ligação foi iniciada e concluída.
    Escreva um programa que recebe via teclado dois instantes dados em
    horas, minutos e segundo e determina o intervalo de tempo
    (em horas, minutos e segundos) decorrido entre eles.

main()
{
    int hora1,minuto1,segundo1,hora2,minuto2,segundo2,instante1=0,instante2=0,total=0,h=0,m=0,s=0;
    printf("Digite a hora do primeiro instante: ");
    scanf("%d", &hora1);
    printf("Digite os minutos do primeiro instante: ");
    scanf("%d", &minuto1);
    printf("Digite os segundos do primeiro instante: ");
    scanf("%d", &segundo1);

    instante1=(hora1*3600)+(minuto1*60)+segundo1; //passa tudo para segundos

    printf("Digite a hora do segundo instante: ");
    scanf("%d", &hora2);
    printf("Digite os minutos do segundo instante: ");
    scanf("%d", &minuto2);
    printf("Digite os segundos do segundo instante: ");
    scanf("%d", &segundo2);

    instante2=(hora2*3600)+(minuto2*60)+segundo2; //passa tudo para segundos
    total=instante2-instante1;
    h=total/3600;
    m=((h*3600)-total)*60;
    s=(total-(h*3600+(m*60)));
    printf("O intervalo de tempo será;\n");
    printf("%d h/ %d min/ %d sec\n", h, m, s);
    printf("*****************FIM DO PROGRAMA.*****************");

}

 

adicionado 37 minutos depois
main()
{
    int hora1,minuto1,segundo1,hora2,minuto2,segundo2,instante1=0,instante2=0,total=0,h=0,m=0,s=0;
    printf("Digite a hora do primeiro instante: ");
    scanf("%d", &hora1);
    printf("Digite os minutos do primeiro instante: ");
    scanf("%d", &minuto1);
    printf("Digite os segundos do primeiro instante: ");
    scanf("%d", &segundo1);

    instante1=(hora1*3600)+(minuto1*60)+segundo1; //passa tudo para segundos

    printf("Digite a hora do segundo instante: ");
    scanf("%d", &hora2);
    printf("Digite os minutos do segundo instante: ");
    scanf("%d", &minuto2);
    printf("Digite os segundos do segundo instante: ");
    scanf("%d", &segundo2);

    instante2=(hora2*3600)+(minuto2*60)+segundo2; //passa tudo para segundos
    if(instante1>instante2)
    {
        total=(24*3600-instante1)+instante2;
        printf("O intervalo de tempo será; %d\n",total);
        printf("%d h/ %d min/ %d sec\n",total/3600,(total%3600)/60,total%60);
    }
    total=instante2-instante1;
    printf("%d h/ %d min/ %d sec\n",total/3600,(total%3600)/60,total%60);
    printf("*****************FIM DO PROGRAMA.*****************");
}

Pessoal Consegui resolver do jeito que eu queria.

  • Obrigado 1
  • Solução
Postado

@Malcolm X     yem hum errinho básico bem na linha onde calcula os minutos  , 

Desse :
m=((h*3600)-total)*60;

para Esse :
m = ( total - ( h * 3600 )/* - total*/ ) / 60;

e seu código com algumas modificações poderia ser assim   :

#include <stdio.h>
int main()
{
    int hora1,minuto1,segundo1,hora2,minuto2,segundo2,instante1=0,instante2=0,total=0,h=0,m=0,s=0;
    printf("Digite a hora do primeiro instante: ");
    scanf("%d", &hora1);
    printf("Digite os minutos do primeiro instante: ");
    scanf("%d", &minuto1);
    printf("Digite os segundos do primeiro instante: ");
    scanf("%d", &segundo1);

    instante1=(hora1*3600)+(minuto1*60)+segundo1; //passa tudo para segundos
    printf("\ntotal em Segundos Antes  -> %2d\n\n",instante1);
    printf("Digite a hora do segundo instante: ");
    scanf("%d", &hora2);
    printf("Digite os minutos do segundo instante: ");
    scanf("%d", &minuto2);
    printf("Digite os segundos do segundo instante: ");
    scanf("%d", &segundo2);

    instante2=(hora2*3600)+(minuto2*60)+segundo2; //passa tudo para segundos
    printf("\ntotal em Segundos Depois  -> %2d\n\n",instante2);
    total = instante2 - instante1;
    printf("\nTempo Total Da Ligacao  -> %2d\n\n",total);
    h = total / 3600;
    m = ( total - ( h * 3600 )/* - total*/ ) / 60;
    s = ( total - ( h * 3600 + ( m * 60 ) ) );
    printf("O intervalo de tempo será ;\n");
    printf("Horas    %3d\n",h);
    printf("Minutos  %3d\n",m);
    printf("Segundos %3d\n\n\n",s);
    printf("*****************FIM DO PROGRAMA.*****************");
    return 32768;
}

 

  • Curtir 1

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...