10/11/2016

Ejercicio 29

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;
    }
}