Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
GabrielMaxx

Calculadora de data em c++

Recommended Posts

Boas pessoal!

 

Seguinte, tenho que fazer um trabalho pra faculdade de programação, em C++, uma calculadora de datas, resolvi procurar na net alguma coisa que poderia me ajudar, mas o que achei foi apenas calculadoras com diferença de datas e a minha não é sobre diferença, e sim de adição ou subtração.

 

Por exemplo, uma pessoa entra com uma data inicial (fiz as validações), depois escolhe se quer adicionar ou remover, ai escolhe se quer dias, mês ou ano e o programa mostra o resultado de quando seria o dia em questão.

 

Já conseguir fazer com um amigo meu as contas dos anos e meses, tanto adição quanto subtração. Meu problema está sendo a conta dos dias, por isso estou aqui :) Tem aquela questão que quando o dia passa de 30 ou 31, dependendo do mês, ou até o caso de fevereiro 28 ou 29, o mês muda, e se passam de 12 meses, o ano muda. Isso eu já fiz nas outras contas, mas a de dia eu não estou conseguindo.

 

Ainda estou estudando programação e meu código não está dos mais bonitos kkkk mas estou bem feliz com o que consegui até agora. Eis o que fiz:

#include <iostream>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

using namespace std;

void AnoMais(int dia, int mes, int ano, int mAno){
	cout << dia << "/" << mes << "/" << ano + mAno << endl;
}

void AnoMenos(int dia, int mes, int ano, int MAno){
	cout << dia << "/" << mes << "/" << ano - MAno << endl;
}

void MesMenos(int dia, int mes, int ano, int MMes){
	int soma;
	soma = mes-MMes;
	if((mes-MMes)<=12 && (mes-MMes)>=1){
		cout << dia << "/" << mes - MMes << "/" << ano <<endl;
	}
	else if((mes-MMes)<1){
		do{
		ano--;
		MMes = MMes - 12;
		}while(MMes>12);
	cout << dia << "/" << mes - MMes << "/" << ano << endl;
	}
}
void MesMais(int dia, int mes, int ano, int mMes){
	int resto, A;
	if((mes+mMes)>12){
		resto = (mes+mMes) % 12;
		A = (mes+mMes)/12;
		if(resto == 0){
			resto = 12;
			A--;
		}
		cout << dia << "/" << resto << "/" << ano + A <<endl;
	}
	else{
		cout << dia << "/" << mes + mMes << "/" << ano <<endl;
	}
}

void DiaMais(int dia, int mes, int ano, int mDia){
	int meses[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	int resto, resto1, A, B, C;
	if(ano % 4 == 0){
		meses[2] = 29;
	}
	int aux = meses[mes];
	if((dia+mDia)<=meses[mes]){
		cout << dia+mDia << "/" << mes << "/" << ano << endl;
	}
	else if((dia+mDia)>aux){
		resto = (dia+mDia)%aux;
		A = (dia+mDia)/aux;
		if(resto == 0){
			resto = aux
		}
			if((mes+A)>12){
				resto1 = (mes+A)%12;
				B = (mes+A)/12;
				cout << resto << "/" << resto1 << "/" << ano + B << endl;
			}
			else{
				cout << resto << "/" << mes+A << "/" << ano << endl;
			}
	}
}

int main(){
	
	int meses[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	int dia1, mes1, ano1, mAno, mMes, mDia, MAno, MMes;
	char c;
	int esc, esc1, esc2;
	
	cout << "Entre com a data no seguinte formato dd/mm/aaaa:" << endl;
	cin >> dia1 >> c >> mes1 >> c >> ano1;
	if(ano1 % 4 == 0){
		meses[2] = 29;
	}
	if(dia1 > meses[mes1] || dia1 < 1 || mes1 > 12 || mes1 < 1 || ano1 > 3000 || ano1 < 1900){
		do{
		cout << "Data invalida, por favor digite novamente:" << endl;
		meses[2] = 28;
		cin >> dia1 >> c >> mes1 >> c >> ano1;
		if(ano1 % 4 == 0){
		meses[2] = 29;
		}
		}while(dia1 > meses[mes1] || dia1 < 1 || mes1 > 12 || mes1 < 1 || ano1 > 3000 || ano1 < 1900);
	}
	
	cout << "\nEscolha uma opcao:" << endl;
	cout << "1 = Adicao +" << endl;
	cout << "2 = Subtracao -" << endl;
	cin >> esc;
	if(esc == 1){
		cout << "Agora escolha Ano, Mes ou Dia" << endl;
		cout << "1 = Ano" << endl;
		cout << "2 = Mes" << endl;
		cout << "3 = Dia" << endl;
		cin >> esc1;
	}
	else if(esc == 2){
		cout << "Agora escolha Ano, Mes ou Dia" << endl;
		cout << "1 = Ano" << endl;
		cout << "2 = Mes" << endl;
		cout << "3 = Dia" << endl;
		cin >> esc2;
	}
	
	
	
	switch(esc){
		case 1:{
			switch(esc1){		
				case 1:{
					cout << "O valor desejado? = " << endl;
					cin >> mAno;
					AnoMais(dia1, mes1, ano1, mAno);
				break;
				}
			
				case 2:{
					cout << "O valor desejado? = " << endl;
					cin >> mMes;
					MesMais(dia1, mes1, ano1, mMes);
				break;
				}
			
				case 3:{
					cout << "O valor desejado? = " << endl;
					cin >> mDia;
					DiaMais(dia1, mes1, ano1, mDia);
				break;
				}
			}
		break;
		}
		case 2:{
			switch(esc2){
			
				case 1:{
					cout << "O valor desejado? = " << endl;
					cin >> MAno;
					AnoMenos(dia1, mes1, ano1, MAno);
				break;
				}
			
				case 2:{
					cout << "O valor desejado? = " << endl;
					cin >> MMes;
					MesMenos(dia1, mes1, ano1, MMes);
				break;
				}
			
				case 3:{
					cout << "Em construção" <<endl;
				break;
				}
			}
		break;
		}
	}

return 0;}

Poderiam me ajudar?

Editado por GabrielMaxx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×