Haga un algoritmo que pueda calcular la edad y el signo zodiacal de una persona, para ello se debe pedir el día, mes y año de nacimiento de la persona.

#include <iostream>
//Se incluye la clase Calcular para despues llamar a sus metodos
#include "Calcular.h"
using namespace std;
// metodo para retornar el nombre de los signos
string mostrarSigno(Calcular *obj)
{
// el signo sera igual al valor que retorne el metodo signoZodiacal()
switch (obj->signoZodiacal())
{
case 1:
return "Acuario";
case 2:
return "Piscis";
case 3:
return "Aries";
case 4:
return "Tauro";
case 5:
return "Geminis";
case 6:
return "Cancer";
case 7:
return "Leo";
case 8:
return "Virgo";
case 9:
return "Libra";
case 10:
return "Escorpio";
case 11:
return "Sagitario";
default:
return "Capricornio";
}
}
int main(void)
{
// se crea un objeto de la clase Calcular (Instanciaciación)
Calcular *obj = new Calcular();
int d,m,a;// declaramos las variables d,m,a de tipo entero
// pedimos el dia de nacimiento y lo guardamos en "d"
cout << "Digite dia de nacimiento" << endl;
cout << ">> ";
cin >> d;
// llamamos al setDia() y encapsulamos "d"
obj->setDia(d);
// pedimos el mes de nacimiento y lo guardamos en "d"
cout << "Digite mes de nacimiento" << endl;
cout << ">> ";
cin >> m;
// llamamos al setMes() y encapsulamos "m"
obj->setMes(m);
/* notese que se convierte el "164" en un caracter (char)
* ese 164 en la tabla ASCII significa "ñ"
*/
cout << "Digite a" << (char) 164 << "o de nacimiento" << endl;
cout << ">> ";
cin >> a;
// llamamos al setAnio() y encapsulamos "a"
obj->setAnio(a);
cout << "Signo: " << mostrarSigno(obj) << endl;
cout << "Edad: " << obj->edadPersona() << endl;
}
#ifndef CALCULAR_H
#define CALCULAR_H
class Calcular
{
public:
Calcular();
virtual ~Calcular();
// se declaran los metodos publicos para calcular la edad y el signo
int edadPersona();
int signoZodiacal();
// se declaran los metodos Setters y Getters de la clase
void setDia(int n);
int getDia();
void setMes(int n);
int getMes();
void setAnio(int n);
int getAnio();
protected:
private:
// se declaran los atributos privados de la clase
int dia;
int mes;
int anio;
};
#endif // CALCULAR_H
#include "Calcular.h"
Calcular::Calcular()
{
dia = 0;
mes = 0;
anio = 0;
}
Calcular::~Calcular()
{
//dtor
}
// implementacion del metodo para calcular la edad
int Calcular::edadPersona()
{
return 2016 - anio;
}
// implementacion del metodo para calcular el signo zodiacal
int Calcular::signoZodiacal()
{
/* si la persona cumple entre el 21 y el 31 de enero
* o entre el 1 y el 18 de febrero, entonces retornara 1
* el cual sera el valor de "Acuario", asi sera con las demas condiciones..
*/
if ((mes == 1 && dia >= 21 && dia <= 31) || (mes == 2 && dia >= 1 && dia <= 18))
{
return 1;
}
else if ((mes == 2 && dia >= 19 && dia <= 30) || (mes == 3 && dia >= 1 && dia <= 20))
{
return 2;
}
else if ((mes == 2 && dia >= 21 && dia <= 31) || (mes == 4 && dia >= 1 && dia <= 20))
{
return 3;
}
else if ((mes == 4 && dia >= 21 && dia <= 31) || (mes == 4 && dia >= 1 && dia <= 21))
{
return 4;
}
else if ((mes == 5 && dia >= 22 && dia <= 31) || (mes == 6 && dia >= 1 && dia <= 20))
{
return 5;
}
else if ((mes == 6 && dia >= 22 && dia <= 31) || (mes == 7 && dia >= 1 && dia <= 22))
{
return 6;
}
else if ((mes == 7 && dia >= 23 && dia <= 31) || (mes == 8 && dia >= 1 && dia <= 22))
{
return 7;
}
else if ((mes == 8 && dia >= 23 && dia <= 31) || (mes == 9 && dia >= 1 && dia <= 22))
{
return 8;
}
else if ((mes == 9 && dia >= 23 && dia <= 31) || (mes == 10 && dia >= 1 && dia <= 22))
{
return 9;
}
else if ((mes == 10 && dia >= 23 && dia <= 31) || (mes == 11 && dia >= 1 && dia <= 22))
{
return 10;
}
else if ((mes == 11 && dia >= 22 && dia <= 31) || (mes == 12 && dia >= 1 && dia <= 21))
{
return 11;
}
else
{
return 12;
}
}
// implementacion de los metodos Setters y Getters de los atributos de la clase
void Calcular::setDia(int n)
{
dia = n;
}
int Calcular::getDia()
{
return dia;
}
void Calcular::setMes(int n)
{
mes = n;
}
int Calcular::getMes()
{
return mes;
}
void Calcular::setAnio(int n)
{
anio = n;
}
int Calcular::getAnio()
{
return anio;
}
//Se importa paquete "JOptionPane" para dibujar un cuadro de dialogo en pantalla
//que muestre información o para llenar información.
import javax.swing.JOptionPane;
public class Main
{
// metodo para retornar el nombre de los signos
public static String mostrarSigno(Calcular obj)
{
// el signo sera igual al valor que retorne el metodo signoZodiacal()
switch (obj.signoZodiacal())
{
case 1:
return "Acuario";
case 2:
return "Piscis";
case 3:
return "Aries";
case 4:
return "Tauro";
case 5:
return "Geminis";
case 6:
return "Cancer";
case 7:
return "Leo";
case 8:
return "Virgo";
case 9:
return "Libra";
case 10:
return "Escorpio";
case 11:
return "Sagitario";
default:
return "Capricornio";
}
}
public static void main(String[] args)
{
// se crea un objeto de la clase Calcular (Instanciaciación)
Calcular obj = new Calcular();
int d,m,a; // declaramos las variables d,m,a de tipo entero
// pedimos el dia de nacimiento y lo guardamos en "d"
d = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite dia de nacimiento"));
// llamamos al setDia() y encapsulamos "d"
obj.setDia(d);
// pedimos el mes de nacimiento y lo guardamos en "d"
m = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite mes de nacimiento"));
// llamamos al setMes() y encapsulamos "m"
obj.setMes(m);
// pedimos el año de nacimiento y lo guardamos en "a"
a = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite año de nacimiento"));
// llamamos al setAnio() y encapsulamos "a"
obj.setAnio(a);
// mostramos el Signo y la Edad
JOptionPane.showMessageDialog(null, "Signo: " + mostrarSigno(obj));
JOptionPane.showMessageDialog(null, "Edad: " + obj.edadPersona());
}
}
public class Calcular
{
// declaramos los atributos de tipo entero
private int dia;
private int mes;
private int anio;
public Calcular()
{
dia = 0;
mes = 0;
anio = 0;
}
// metodo para calcular la edad de la persona
int edadPersona()
{
return 2016 - anio;
}
// metodo para calcular el signo zodiacal
public int signoZodiacal()
{
/* si la persona cumple entre el 21 y el 31 de enero
* o entre el 1 y el 18 de febrero, entonces retornara 1
* el cual sera el valor de "Acuario", asi sera con las demas condiciones..
*/
if ((mes == 1 && dia >= 21 && dia <= 31) || (mes == 2 && dia >= 1 && dia <= 18))
{
return 1;
}
else if ((mes == 2 && dia >= 19 && dia <= 30) || (mes == 3 && dia >= 1 && dia <= 20))
{
return 2;
}
else if ((mes == 2 && dia >= 21 && dia <= 31) || (mes == 4 && dia >= 1 && dia <= 20))
{
return 3;
}
else if ((mes == 4 && dia >= 21 && dia <= 31) || (mes == 4 && dia >= 1 && dia <= 21))
{
return 4;
}
else if ((mes == 5 && dia >= 22 && dia <= 31) || (mes == 6 && dia >= 1 && dia <= 20))
{
return 5;
}
else if ((mes == 6 && dia >= 22 && dia <= 31) || (mes == 7 && dia >= 1 && dia <= 22))
{
return 6;
}
else if ((mes == 7 && dia >= 23 && dia <= 31) || (mes == 8 && dia >= 1 && dia <= 22))
{
return 7;
}
else if ((mes == 8 && dia >= 23 && dia <= 31) || (mes == 9 && dia >= 1 && dia <= 22))
{
return 8;
}
else if ((mes == 9 && dia >= 23 && dia <= 31) || (mes == 10 && dia >= 1 && dia <= 22))
{
return 9;
}
else if ((mes == 10 && dia >= 23 && dia <= 31) || (mes == 11 && dia >= 1 && dia <= 22))
{
return 10;
}
else if ((mes == 11 && dia >= 22 && dia <= 31) || (mes == 12 && dia >= 1 && dia <= 21))
{
return 11;
}
else
{
return 12;
}
}
// implementacion de los metodos Setters y Getters de los atributos de la clase
public void setDia(int n)
{
dia = n;
}
public int getDia()
{
return dia;
}
public void setMes(int n)
{
mes = n;
}
public int getMes()
{
return mes;
}
public void setAnio(int n)
{
anio = n;
}
public int getAnio()
{
return anio;
}
}