2/06/2017

Ejercicio 40

Dados tres valores positivos determinar si éstos no forman triángulo o si forman triángulo, decir si éste es: equilátero, isósceles o escaleno y obtener el área del triángulo.

Matriz
Colaborador: Thiago López

#include <iostream>
// se incluye la clase Triangulo para despues llamar a sus metodos 
#include "Triangulo.h"

using namespace std;

int main(void)
{
    float a,b,c;

    // se crea un objeto de la clase Triangulo (Instanciaciación) 
    Triangulo *obj=new Triangulo();
    cout << "====INTRODUZCA LAS LONGITUDES DEL TRIANGULO====" << endl << endl;
    // se pide el primer valor 
    cout << "Digite longitud A:" << endl;
    cout << ">> ";
    cin >> a;
    // se encapsula la variable a 
    obj->setValorA(a);
    // se pide el segundo valor 
    cout << "Digite longitud B" << endl;
    cout << ">> ";
    cin >> b;
    // se encapsula la variable b 
    obj->setValorB(b);

    // se pide el tercer valor 
    cout << "Digite longitud C" << endl;
    cout << ">> ";
    cin >> c;
    // se encapsula la variable c 
    obj->setValorC(c);
    cout << endl;

    if (((a+b) > c) && ((a+c) > b) && ((b+c) > a))
    {
        if ((a == b) && (b == c))
        {
            cout << "El triangulo es Equilatero." << endl << endl;

        }
        else if (((a == b) && (a != c)) || ((a == c) && (c != b)) || ((b == c)&& (c != a)) || ((c == a) && (a != b)))
        {
            cout << "El triangulo es Isoceles." << endl << endl;
        }
        else
        {
            cout << "El triangulo es Escaleno." << endl << endl;
        }
        // se muestra el area del triangulo 
        cout << "El area del triangulo es: " << obj->area() << endl;
    }
    else
    {
        cout << "Las longitudes no forman un triangulo" << endl;
    }
}

#ifndef TRIANGULO_H
#define TRIANGULO_H


class Triangulo
{
    public:
        Triangulo();
        virtual ~Triangulo();
        // se declaran los metodos publicos 
        void setValorA(float dat);
        float getValorA();
        void setValorB(float dat);
        float getValorB();
        void setValorC(float dat);
        float getValorC();
        float area();
    protected:

    private:
        // se declaran los atributos privados 
        float l1;
        float l2;
        float l3;
};

#endif // TRIANGULO_H 

#include "Triangulo.h"
#include "math.h"
Triangulo::Triangulo()
{
    // al inicializar el constructor se definiran los valores iniciales de los atributos 
    l1 = 0;
    l2 = 0;
    l3 = 0;
}

Triangulo::~Triangulo()
{
    //dtor 
}

void Triangulo::setValorA(float dat)
{
    l1 = dat;
}
float Triangulo::getValorA()
{
    return l1;
}

void Triangulo::setValorB(float dat)
{
    l2 = dat;
}
float Triangulo::getValorB()
{
    return l2;
}

void Triangulo::setValorC(float dat)
{
    l3 = dat;
}
float Triangulo::getValorC()
{
    return l3;
}

float Triangulo::area()
{
    // declaramos una variable que almacena el semiperimetro del triangulo para poder utilizar los lados para obtener el area 
    float s = (val1 + val2 + val3)/2;
    // se utiliza la formula de heron para calcular el area 
    float area= sqrt(s*(s-val1)*(s-val2)*(s-val3));
    // retornamos el resultado 
    return area;
}

// 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
{
    public static void main(String[] args)
    {
        // se crea un objeto de la clase Convertir (Instanciaciación) 
        Triangulo obj = new Triangulo();
        
        float a,b,c;
        // se pide el valor de A 
        a = Float.parseFloat(JOptionPane.showInputDialog("Digite el valor de A"));
        // se encapsula la variable a 
        obj.setValorA(a);   
        // se pide el valor de B 
        b = Float.parseFloat(JOptionPane.showInputDialog("digite el valor de B"));
        // se encapsula la variable b 
        obj.setValorB(b);
        
        // se pide el valor de C 
        c = Float.parseFloat(JOptionPane.showInputDialog("Digite el valor de C"));
        // se encapsula la variable c 
        obj.setValorC(c);
        // se muestra el resultado del area y el tipo de triangulo 
        
        if(((a + b) > c) && ((a + c) > b) && ((b + c) > a))
        {
            if((a == b) && (b == c))
            {
                JOptionPane.showMessageDialog(null,"El triangulo es Equilatero." + "\n" + "Area: " + obj.area());

            }
            else if(((a == b) && (a != c)) || ((a == c) && (c != b)) || ((b == c)&& (c != a)) || ((c == a)&&(a != b)))
            {
                JOptionPane.showMessageDialog(null,"El triangulo es Isoceles." + "\n" + "Area: " + obj.area());
            }
            else
            {
                JOptionPane.showMessageDialog(null,"El triangulo es Escaleno." + "\n" + "Area: " + obj.area());
            }
        }
        else 
        {
            JOptionPane.showMessageDialog(null,"Las longitudes no forman un triangulo.");
        }
    }
}

public class Triangulo
{
    // declaramos los atributos privados 
    private float l1;
    private float l2;
    private float l3;
    
    
    public Triangulo()
    {
        // al inicializar el constructor se definiran los valores iniciales de los atributos 
        l1=0;
        l2=0;
        l3=0;
    }

    // metodos Setters y Getters de los atributos de la clase 
    public void setValorA(float val)
    {
        l1 = val;
    }
    public float getValorA()
    {
        return l1;
    }
    public void setValorB(float val)
    {
        l2 = val;
    }
    public float getValorB()
    {
        return l2;
    }
    public void setValorC(float val)
    {
        l3 = val;
    }    
    public float getValorC()
    {
        return l3;
    }
    
    // metodo para hallar el aréa 
    public double area()
    {
        // declaramos una variable que almacena el semiperimetro del triangulo para poder utilizar los lados para obtener el area 
        double s = (l1 + l2 + l3)/2;
        // se utiliza la formula de heron para calcular el area 
        double area= Math.sqrt((s  * (s - l1) * (s - l2) * (s - l3)));
        // retornamos el resultado 
        return area;
    }
}