Ir ao conteúdo
  • Cadastre-se

Calcular data de vencimento c++


Visitante

Posts recomendados

Alguém poderia me ajudar??

 

Sou estudando de Eng. da computação, e a professora passou uma atividade em c++ para. comparar uma data de validade de uma carteira de habilitaçao, e dizer se ela ja esta vencida ou não, e eu não sei como fazer comparação de datas, alguém pode me ajudar???

Link para o comentário
Compartilhar em outros sites

@Sonoctez cara você algum conhecimento com essa linguagem? se sim, dependendo do seu conhecimento e de forma simplificada, basta criar variaveis para armazenar a data de criação da carteira (dia, mês, ano) e algumas outras para armazenar a data de quando ira vencer (tambem ano, mês, dia), nisso você pode criar uma condição em um IF para comparar essas datas depois imprimir a mensagem na tela. É algo relativamente fácil de se fazer até o ponto que eu entendi.

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <time.h>

int main(){
    char dateStr [9]; //vetor de char para guardar a data do sistema
    int dia1, mes1, ano1; //variaveis para guardar a data de vencimento
    int dia2, mes2, ano2; //variaveis para guardar a data do sistema
    int op = 1; //só coloquei aqui para fazer um loop
    _strdate(dateStr); //pega a data atual do sistema e guarda em um vetor de char
    dia2 = (dateStr[3]-48)*10 + (dateStr[4]-48); //retira do vetor de char a parte dia
    mes2 = (dateStr[0]-48)*10 + (dateStr[1]-48); //retira do vetor de char a parte mes
    ano2 = (dateStr[6]-48)*10 + (dateStr[7]-48); //retira do vetor de char a parte ano
    while(op == 1){ //só ta aqui para poder fazer varios testes
        printf("Insira a data de vencimento no formato dd/mm/aa: "); //daqui pra frente é logica, pode fazer do jeito que quiser
        scanf("%d/%d/%d", &dia1, &mes1, &ano1);
        printf( "Data atual: %.2d/%.2d/%.2d\n", dia2, mes2, ano2);
        if(ano1<ano2)
            printf("Carta vencida!\n");
        else if(ano1==ano2 && mes1<mes2)
            printf("Carta vencida!\n");
        else if(ano1==ano2 && mes1==mes2 && dia1<dia2)
            printf("Carta vencida!\n");
        else
            printf("Carta em dia!\n");
        printf("Digite 1 para nova consulta ou 0 para finalizar: ");
        scanf("%d", &op);
    }
    return 0;
}

Por favor, use esse código só para tentar entender, não copie pois assim você não vai aprender.

Link para o comentário
Compartilhar em outros sites

@MassakiMsk Minha unica duvida, você poderia me explicar essas 3 linhas? não entendi muito bem a logica. 

eu sei que dateStr é o nome da variável que coloquei pra armazenar a data, porém não entendi os números dentro dos [], o -48, a multiplicação por 10 e a soma.

 

dia2 = (dateStr[3]-48)*10 + (dateStr[4]-48);

mes2 = (dateStr[0]-48)*10 + (dateStr[1]-48);

ano2 = (dateStr[6]-48)*10 + (dateStr[7]-48);

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Sonoctez O vetor que ele criou para armazenar as informações é de char mas quando você vai realizar a comparação esse "calculo" é feito em int, então você tem de converter de char->int por isso o -48.

Para entender melhor temos de olhar uma tabela ASCII asciifull.gif
Por exemplo, o caractere 7 em char é na verdade o número 55 em decimal, se você subtrair -48 dará o 7 em int que precisa para realizar a comparação.

A multiplicação por 10 é porque o número naquela posição do vetor representa o decimal. dateStr[0] , dateStr[3] e dateStr[6] são os multiplos de 10. Por exemplo se for o dia 20 armazenado, a posição dateStr[3] terá apenas o número 2, multiplicando por 10 fica o dia correto.

Espero que não tenha ficado muito confuso.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!