Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Guest tsenart

[Resolvido] Conversão de horas para segundos ou minutos

Mensagens Recomendadas

Guest tsenart   
Guest tsenart

Olá pessoal...

Estava aqui a ver uns sources que tinha numa pasta já com algum tempo e vi alguns programinhas que tinha feito. Aqui vai um deles.

#include <stdio.h>

long int num(int n_horas, char tipo)
{
     switch(tipo)
     {
         case 'h': return n_horas; break;

         case 'm': return n_horas * 60L; break;

         case 's': return n_horas * 3600L; break;

         default: return -1;
     }

}

int main()
{
int n;
char tipo;

    do
    {
            printf("\nIntroduza o numero de horas('0' para sair): "); scanf("%d",&n);
            printf("\nIntroduza o tipo de conversao(h-horas, m-minutos, s-segundos)"); fflush(stdin); scanf("%c",&tipo);
            printf("\nNum de %c em %d horas-> %ld",tipo,n,num(n, tipo));
    }
    while(n!=0);
return 0;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Guest tsenart   
Guest tsenart

            printf("\nIntroduza o tipo de conversao(h-horas, m-minutos, s-segundos)"); fflush(stdin); scanf("%c",&tipo);

Why fflush(stdin) is wrong

http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1052863818&id=1043284351

Tens razão.... Eu actualmente já não uso o fflush(stdin). Uso duas chamadas ao scanf do seguinte modo:

scanf("%*[^\n]");
scanf("%*c");

A primeira chamada lê e descarta, ou seja, retira todos os caracteres que eventualmente existam no armazenamento tampão de entrada(buffer), até ao aparecimento do caracter '\n'. A segunda chamada lê e descarta um caracter apenas que, devido à instrução anterior, é o caracer '\n'. Logo, recorrendo a estas duas instruções, todos os caracteres da linha que estava a ser processada foram descartados. Consequentemente, foi lida uma linha completa do armazenamento tampão(buffer) de entrada e a posição de leitura ficou colocada no inicio da linha seguinte.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade