Solução Exercício 1 - Aula 2: mudanças entre as edições
Ir para navegação
Ir para pesquisar
imported>Fargoud (Criou página com ' #include <iostream> #define ANOATUAL 2017 using namespace std; //Declaração da classe ''DiadoAno'': class DiadoAno { public: void LeDia(); private: in...') |
imported>Fargoud Sem resumo de edição |
||
| (Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
| Linha 1: | Linha 1: | ||
#include <iostream> | #include <iostream> | ||
#define ANOATUAL | #define ANOATUAL 2018 | ||
using namespace std; | using namespace std; | ||
//Declaração da classe | //Declaração da classe DiadoAno: | ||
class DiadoAno | class DiadoAno | ||
{ public: | { public: | ||
void LeDia(); | |||
private: | |||
int dia; //1-31 | |||
int mes; //1-12 | |||
int ano; //0-2017 | |||
int idade; | |||
int anonasc; | |||
void VerificaData(); | |||
char * mesextenso; | |||
}; | }; | ||
//Função "usuária" da classe - | //Função "usuária" da classe - main: | ||
int main() | int main() | ||
{ DiadoAno hoje; | { DiadoAno hoje; | ||
| Linha 20: | Linha 21: | ||
return 0; | return 0; | ||
} | } | ||
//Método PÚBLICO | //Método PÚBLICO LeDia() da classe DiadoAno: | ||
void DiadoAno::LeDia() | void DiadoAno::LeDia() | ||
{ cout << "\nInforme o dia (1-31)" << endl; | { cout << "\nInforme o dia (1-31)" << endl; | ||
cin >> dia; | |||
cout << "\nInforme o mes (1-12)" << endl; //********* | |||
cin >> mes; | |||
cout << "\nInforme o ano (0-" << ANOATUAL <<")" << endl; | |||
cin >> ano; | |||
cout << "\nQual seu ano de nascimento?" << endl; | |||
cin >> anonasc; | |||
VerificaData(); | |||
} | } | ||
//Método | //Método PRIVADOVerificaData() da classe DiadoAno: | ||
void DiadoAno::VerificaData() | void DiadoAno::VerificaData() | ||
{ int ehbissexto=0, diamax, dataok; | { int ehbissexto=0, diamax, dataok; | ||
if(dia <1 || dia>31) | |||
{ | |||
cout<< "\nErro no dia fornecido!!!\n\n"; | |||
dataok= 0; | |||
} | |||
if (ano <0 || ano > ANOATUAL) | |||
{ | |||
cout<< "\nErro no ano fornecido!!! Entre com um valor entre 0 e " << ANOATUAL << "!\n\n"; | |||
dataok =0; | |||
} | |||
if( (!(ano%4)&&(ano%100)) || (!(ano%400))) | |||
ehbissexto = 1; | |||
idade = ANOATUAL - ano; | |||
switch(mes) | |||
{ case 1: mesextenso= " Janeiro "; | |||
diamax = 31; | diamax = 31; | ||
break; | break; | ||
case 2: mesextenso=" Fevereiro " ; | |||
diamax = ehbissexto? 29: 28; | |||
break; | |||
case 3: mesextenso=" Março "; | |||
diamax = 31; | |||
break; | |||
case 4: mesextenso= " Abril "; | |||
diamax = 30; | diamax = 30; | ||
break; | break; | ||
case 5: mesextenso= " Maio "; | |||
diamax = 31; | |||
break; | |||
case 6: mesextenso=" Junho "; | |||
diamax = 30; | |||
break; | |||
case 7: mesextenso= " Julho "; | |||
diamax = 31; | |||
break; | |||
case 8: mesextenso=" Agosto "; | |||
diamax = 31; | |||
break; | |||
case 9: mesextenso=" Setembro "; | |||
diamax = 30; | |||
break; | |||
case 10: mesextenso= " Outubro "; | |||
diamax = 31; | |||
break; | |||
case 11: mesextenso= " Novembro "; | |||
diamax = 30; | |||
break; | break; | ||
case 12: mesextenso=" Dezembro "; | |||
diamax = 31; | |||
break; | |||
default: cout<< "\nErro no mes fornecido!!! Entre com um valor entre 1 e 12\n\n"; | |||
dataok = 0; | |||
break; | |||
} | |||
if (dataok && (dia<=diamax)) | |||
{ idade = ano - anonasc; | |||
cout << "\nHoje \202 dia: " << dia << " de " << mesextenso << " de " << ano << ".\n"; | |||
cout << "Voce completa "<< idade << " anos de idade , no ano de " << ano << "\n"; | |||
if(ano != ANOATUAL) | |||
cout << "\nE completara "<< (ANOATUAL - anonasc) << " anos de idade , no ano de " << ANOATUAL << "\n\n\n"; | |||
if(ehbissexto) cout << "\n O ano de " << ano << " \202 bissexto! \n"; | |||
} | |||
else | |||
if(dia>diamax) | |||
cout << "\nO mes de "<< mesextenso << "so tem " << diamax << " dias!!!\n DATA INVALIDA!\n\n\n"; | |||
else | |||
cout<< "\n DATA INVALIDA!\n\n\n"; | |||
} | } | ||
Edição atual tal como às 16h20min de 28 de fevereiro de 2018
#include <iostream>
#define ANOATUAL 2018
using namespace std;
//Declaração da classe DiadoAno:
class DiadoAno
{ public:
void LeDia();
private:
int dia; //1-31
int mes; //1-12
int ano; //0-2017
int idade;
int anonasc;
void VerificaData();
char * mesextenso;
};
//Função "usuária" da classe - main:
int main()
{ DiadoAno hoje;
hoje.LeDia();
return 0;
}
//Método PÚBLICO LeDia() da classe DiadoAno:
void DiadoAno::LeDia()
{ cout << "\nInforme o dia (1-31)" << endl;
cin >> dia;
cout << "\nInforme o mes (1-12)" << endl; //*********
cin >> mes;
cout << "\nInforme o ano (0-" << ANOATUAL <<")" << endl;
cin >> ano;
cout << "\nQual seu ano de nascimento?" << endl;
cin >> anonasc;
VerificaData();
}
//Método PRIVADOVerificaData() da classe DiadoAno:
void DiadoAno::VerificaData()
{ int ehbissexto=0, diamax, dataok;
if(dia <1 || dia>31)
{
cout<< "\nErro no dia fornecido!!!\n\n";
dataok= 0;
}
if (ano <0 || ano > ANOATUAL)
{
cout<< "\nErro no ano fornecido!!! Entre com um valor entre 0 e " << ANOATUAL << "!\n\n";
dataok =0;
}
if( (!(ano%4)&&(ano%100)) || (!(ano%400)))
ehbissexto = 1;
idade = ANOATUAL - ano;
switch(mes)
{ case 1: mesextenso= " Janeiro ";
diamax = 31;
break;
case 2: mesextenso=" Fevereiro " ;
diamax = ehbissexto? 29: 28;
break;
case 3: mesextenso=" Março ";
diamax = 31;
break;
case 4: mesextenso= " Abril ";
diamax = 30;
break;
case 5: mesextenso= " Maio ";
diamax = 31;
break;
case 6: mesextenso=" Junho ";
diamax = 30;
break;
case 7: mesextenso= " Julho ";
diamax = 31;
break;
case 8: mesextenso=" Agosto ";
diamax = 31;
break;
case 9: mesextenso=" Setembro ";
diamax = 30;
break;
case 10: mesextenso= " Outubro ";
diamax = 31;
break;
case 11: mesextenso= " Novembro ";
diamax = 30;
break;
case 12: mesextenso=" Dezembro ";
diamax = 31;
break;
default: cout<< "\nErro no mes fornecido!!! Entre com um valor entre 1 e 12\n\n";
dataok = 0;
break;
}
if (dataok && (dia<=diamax))
{ idade = ano - anonasc;
cout << "\nHoje \202 dia: " << dia << " de " << mesextenso << " de " << ano << ".\n";
cout << "Voce completa "<< idade << " anos de idade , no ano de " << ano << "\n";
if(ano != ANOATUAL)
cout << "\nE completara "<< (ANOATUAL - anonasc) << " anos de idade , no ano de " << ANOATUAL << "\n\n\n";
if(ehbissexto) cout << "\n O ano de " << ano << " \202 bissexto! \n";
}
else
if(dia>diamax)
cout << "\nO mes de "<< mesextenso << "so tem " << diamax << " dias!!!\n DATA INVALIDA!\n\n\n";
else
cout<< "\n DATA INVALIDA!\n\n\n";
}