Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pulse

Datas

Recommended Posts

Escreva um programa que solicita ao usuário duas datas (dia, mês, ano), onde a primeira data é o dia atual e a segunda é a data de vencimento de suas contas, em seguida o seu programa deve imprimir se a conta em questão “esta atrasada”, “nao esta atrasada” ou “vence neste dia”. Assuma que o usuário informa duas datas válidas.



#include <stdio.h>


int main ()

{

int datatual=0, datavenc=0;


printf("Digite a data atual no formato DDMMAAA e sem barras\n");

scanf("%i", &datatual);


printf("Digite a data de vencimento no formato DDMMAAA e sem barras\n");

scanf("%i", &datavenc);


if (datatual>datavenc)

{

printf("esta atrasado!\n");

}

else if (datavenc>datatual)

{

printf("nao esta atrasado!\n");

}

else

{

printf("vence neste dia!\n");

}

}



O programa não funciona pra datas iniciadas em 0. O que devo fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

Olha Pulse testei o código aqui e funcionou perfeitamente em todas as combinações de datas que pude testar, mostrando todas as mensagens corretamente ! ! !

 

Tente ser mais especifico com relação as datas que você esta tendo dificuldades.

 

 

 

Ubuntu 14.04 GCC 4.4.8 Codeblocks 13.12

 

 

Espero ter Ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Detalhes do scanf nos quais quase ninguém deve prestar atenção:

%d -> número na base decimal
%i -> número na base b dependendo do "prefixo".

Ou seja, se você está usando %i e informa uma data do tipo 06, ela será interpretada como octal e não decimal. Isso pode gerar erros quando você usar, por exemplo, 09, já que 9 é um dígito inválido na base octal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

 

 

Oi Pulse e _isis_ realmente eu deixei passar o %i no código acima, além do mais a única combinação que não testei aqui e que quando testei e não funcionou foi a de 09, obrigado pelas observações, vou tentar prestar mais atenção no futuro além de que vou levar estas observações para o resto de meus estudos!

 

 

Obrigado e ate a próxima ! ! !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.