Olá
Eu estou precisando fazer um trab. ond eu coloco a data de locaçao do filme, e depois coloco a data de devolução do filme, c\ isso será calculado a qtde de dias q o filme ficou c\ o cliente.
Porem eu ñ consigo fazer issso, por causa dos meses de 30 e 31 dias, de ano bissesto, e o cliente pd ficar qnto tempo quiser c\ o filme, se ele quiser ele pd ficar anos c\ o filme.
Gostaria de saber se alguem poderia me ajudar c\ esse código ou se já tem o código.
Esse prog. na faculdade teria q ser desenvolvido em Pascal ou C, mas eu consigo entender o código estando em Delphi ou C++. O código em qualquer uma dessas linguagens já ajuda.
Obrigado
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Como validar data
O problema é que vc tem que pensar algoritmicamente(*Palavrinha difícil de falar*) vc poderia tentar "pegar" cada campo como variavel separada:
exemplo:
int dia, mes, ano;
depois vc testa o mes com um switch
switch(mes)
case 1:
if dia < 0 || dia > 31
printf("Dia inválido");
case 2:
if dia < 0 || dia > 28
printf("Dia inválido")
.......
default:
printf("Isto não é um mes!!!!!");
mas isso é considerando que não existe ano bissexto.......
bota a cabeça pra funcionar que vc vai conseguir fazer numa boa....
isso é só questão de pensar um pouco,só o que vc tem que fazer é sair um pouco da frente do pc e raciocinar....
Os meses q têm 30 ou 31 dias são fixos, vc pode programar isso no seu aplicativo. Veja a tabela desse link: http://pt.wikipedia.org/wiki/Calend%C3%A1rio_gregoriano
Assim tendo o mês inicial e final, vc consegue calcular quantos meses entre eles têm 30 e/ou 31 dias, e assim contar os dias.
E tendo o ano inicial e o final, vc consegue calcular quantos anos bissextos existem entre eles.
Com esses dados, vc consegue calcular o número total de dias de forma precisa.
Uma outra opção é vc procurar por alguma biblioteca de calendários já pronta, mas aí vc vai perder mto do aprendizado, se é esse seu objetivo.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
DarkWay...
Se a linguagem de programação for C ou C++ você poderá usar as função da biblioteca time.h .
Existe uma função que faz essa verificação outomáticamente, dá uma pesquisada ai !
[email]umbrsuporte@hotmail.com[/email]
Fazendo "no braço", pode ser assim :
#include <stdio.h>
int main()
{
int meses[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int dia, mes, ano;
do{
printf("Digite o dia : "
scanf("%d",&dia); fflush(stdin);
}while(dia<1 || dia>31);
do{
printf("Digite o mes : "
scanf("%d",&mes); fflush(stdin);
}while(mes<1 || mes>12);
do{
printf("Digite o ano : "
scanf("%d",&ano); fflush(stdin);
}while(ano<1900); //COLOQUE QUALQUER LIMITE
if(((ano%4==0)&&(ano%100!=0)) || (ano%400==0)) //se eh ano bissexto
meses[1] = 29;
if(dia>meses[mes-1])
printf("\nO mes %d do ano de %d nao tem %d dias!!!",mes, ano, dia);
else
printf("\nData valida!"
getchar();
return(0);
}
Aqui nesse outro tópico tem uma solução pra contagem de dias, pra hora da cobrança do aluguel :
https://www.hardware.com.br/comunidade/programa-string/782804/1.html
Espero ter ajudado. Abraço,
Gabriel.