Ajuda - Busca - Membros - Calendário
Versão Completa: ajuda porfavor em C
Fórum Script Brasil > Programação & Desenvolvimento > C, C++ > Grupo de Estudos
Tainá Santos
Boa noite pessoas

preciso fazer um algoritmo em C que faça o seguinte

Leia um valor inteiro equivalente a um determinado valor em segundos. Retorne quantas horas, minutos e segundos são compostos por esses valor. Por exemplo 3670(segundos) formaria 1 hora, 1 minuto e 10 segundos.
Eu pensei em fazer ele dessa forma mas vi que estava errada. Agora não sei mais como fazer ele me ajudem pleaaase biggrin.gif

QUOTE(Tainá Santos @ 30/05/2011 - 23:28) *
Boa noite pessoas

preciso fazer um algoritmo em C que faça o seguinte

Leia um valor inteiro equivalente a um determinado valor em segundos. Retorne quantas horas, minutos e segundos são compostos por esses valor. Por exemplo 3670(segundos) formaria 1 hora, 1 minuto e 10 segundos.
Eu pensei em fazer ele dessa forma mas vi que estava errada. Agora não sei mais como fazer ele me ajudem pleaaase biggrin.gif


Desculpa o código esta aqui


CODE
#include <stdio.h>
#include <conio.h>

main ()

{
int segundo, hora, minuto;
    
     printf ("informe um valor em, segundos\n");
     scanf("%d",&segundo);
    
     if (segundo>60)
     minuto = (segundo / 60);
        
    
     if (segundo>3600)
     hora = (segundo / 3600);
    
     printf(" %d segundos formaria %d horas %d minutos e %d segundos\n",segundo ,hora, minuto, segundo);
    
     getch();
    
     }
Durub
Você está quase lá! Problemas:
* A variável segundo nunca muda. Quando você tira uma hora dos segundos, você quer diminuir 3600 do valor dele, certo?
* A ordem está invertida. Para converter corretamente, você precisa primeiro ver quantas horas tem, diminuir do segundo. Depois, ver quantos minutos tem, e diminuir do segundo. Após isso, o número de segundos que restaram vai estar na variável segundo.

Abraços.
Tiago Sutil
CODE
#include <stdio.h>
#include <conio.h>


int main ()
{
    int segundo_inicial, segundo, hora, minuto;

    hora = 0; // caso não tenha no minimo uma hora, no final não sera representado um endereço de memoria e sim 0 horas
    minuto = 0; // claro que você pode fazer um printf mais sofisticado e condicional, ai fica ao seu criterio

    printf ("informe um valor em, segundos\n");
    scanf("%d",&segundo_inicial);

    segundo = segundo_inicial; //para no final você ainda ter o valor inicial

    if (segundo>=3600) // > ou = caso tenha apenas um hora
    {
        hora = (segundo / 3600);
        segundo = segundo - (hora * 3600); // esta linha é obrigatoria para que haja a dedução do valor inicial
    }

    if (segundo>=60) // > ou = caso tenha apenas um minuto
    {
        minuto = (segundo / 60);
        segundo = segundo - (minuto * 60); // esta linha é obrigatoria para que haja a dedução do valor inicial
    }


    printf(" %d segundos formam %d horas %d minutos e %d segundos\n",segundo_inicial ,hora, minuto, segundo);

    getch();

}


Não sei se estou realmente te ajudando lhe dando a resposta pronta, mas com os comentários será fácil seu entendimento de cada modificação no seu programa inicial. smile.gif
Tainá Santos
Só retornando para deixar o codigo final que deu certo. Obrigado pela ajuda blush.gif


CODE
#include <stdio.h>
#include <conio.h>
main ()
{
int segundo, hora, minuto, auxiliar;
     hora = 0;
     minuto = 0;
     segundo = 0;
    
     printf ("informe um valor em segundos\n");
     scanf("%d",&segundo);
     if (segundo>=3600)
     {
     hora = (segundo / 3600);
     minuto = segundo - (hora * 3600);
     auxiliar = minuto;
     minuto = minuto/60;
     segundo = auxiliar - (minuto * 60);
     }
    
     if ((segundo>=60) && (segundo < 3600))
     {
         minuto = (segundo / 60);
         auxiliar = segundo;
         segundo = auxiliar - (minuto * 60);
     }
      
     printf(" %dh:%dm:%ds\n",hora, minuto, segundo);
    
     getch();
    
     }
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.