Dados los tres lados de un triángulo, haga un algoritmo que encuentre: perímetro, semiperímetro y el área del triángulo.
#include <iostream>
// se incluye la clase Triangulo para despues llamar a sus metodos
#include "Triangulo.h"
using namespace std;
int main(void)
{
// se crea un objeto de la clase Triangulo (Instanciaciación)
Triangulo *obj = new Triangulo();
float l1, l2, l3;// se definen 3 variable de tipo float "l1", "l2" y "l3"
cout << "Digite lado 1" << endl;//Se pide el primer lado
cin >> l1; // se guarda el primer lado en "l1"
obj->setLado1(l1);// se llama al metodo modificador de lado 1 y se encapsula "l1"
cout << "Digite lado 2" << endl;// se pide el segundo lado
cin >> l2;// se guarda el segundo lado en "l2"
obj->setLado2(l2);// se llama al metodo modificador de lado 2 y se encapsula "l2"
cout << "Digite lado 3" << endl;// se pide el tercer lado
cin >> l3; // se guarda el tercer lado en "l3"
obj->setLado3(l3);// se llama al metodo modificador de lado 3 y se encapsula "l3"
// se muestra en pantalla el perimetro
cout << "El perimetro es: " << obj->perimetro() << endl;
// se muestra en pantalla el semiperimetro
cout << "El semiperimetro es: " << obj->semiperimetro() << endl;
// se muestra en pantalla el area
cout << "El area es: " << obj->area() << endl;
}
#ifndef TRIANGULO_H
#define TRIANGULO_H
class Triangulo
{
public:
Triangulo();
virtual ~Triangulo();
// se definen los metodos publicos:
float perimetro();// perimetro de tipo flotante
float semiperimetro();// semiperimetro de tipo flotante
float area();// area de tipo flotante
// se definen los metodos Setters y Getters de los atributos de la clase
void setLado1(float n);
float getLado1();
void setLado2(float n);
float getLado2();
void setLado3(float n);
float getLado3();
protected:
private:
// se definen los atributos privados:
float lado1;// lado 1 de tipo flotante
float lado2;// lado 2 de tipo flotante
float lado3;// lado 3 de tipo flotante
};
#endif // TRIANGULO_H
#include "Triangulo.h"
// se incluira la libreria "math.h" para utilizar el metodo sqrt()
// y el metodo pow(), para poder realizar la raiz cuadrada y elevar un numero
// a un exponente, ya que es importante para calcular el area, perimetro y
// altura del triangulo.
#include "math.h"
Triangulo::Triangulo()
{
// se le asigna el valor de 0 a lado1, lado2 y lado3 en el constructor
lado1 = 0;
lado2 = 0;
lado3 = 0;
}
Triangulo::~Triangulo()
{
//dtor
}
float Triangulo::perimetro()
{
// el perimetro de un triangulo es la suma de todos sus lados
return lado1 + lado2 + lado3;
}
float Triangulo::semiperimetro()
{
// el semiperimetro de un triangulo es: la suma de todos sus lados dividido entre 2.
return (lado1 + lado2 + lado3) / 2;;
}
float Triangulo::area()
{
float a;
// si el triangulo tiene los tres lados iguales, entonces es un triangulo equilatero:
if(lado1 == lado2 && lado1 == lado3)
{
// la formula para calcular el area de un triangulo equilatero es:
a = sqrt(3) / 4 * lado1;// como todos los lados seran iguales no importa cual lado se tome...
return a;// retornamos el valor de la operación.
}
// si el lado 1 es igual al lado 3 entonces es un triangulo escaleno
else if(lado1 != lado2 && lado1 != lado3)
{
// la formula para calcular el area de un triangulo escaleno es: A=b*c/2
a = (lado2 * lado3) / 2;// retornamos el valor de la operación.
return a;
}
else// sino significa que el tringulo tiene solo dos lado iguales, y seria un trianguilo isósceles
{
// la formula para calcular el area de un triangulo isoceles es:
//A = ( b * √(a^2 - (2^2 / 4)) ) / 2
a = (lado2 * sqrt(pow(3, 2) - (pow(2, 2) / 4))) / 2;
return a;// retornamos el valor de la operación.
}
}
// implementacion de los metodos Setters y Getters de los atributos de la clase
void Triangulo::setLado1(float n)
{
lado1 = n;
}
float Triangulo::getLado1()
{
return lado1;
}
void Triangulo::setLado2(float n)
{
lado2 = n;
}
float Triangulo::getLado2()
{
return lado2;
}
void Triangulo::setLado3(float n)
{
lado3 = n;
}
float Triangulo::getLado3()
{
return lado3;
}
//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 Triangulo (Instanciaciación)
Triangulo obj = new Triangulo();
double l1, l2, l3;//se definen 3 variable de tipo double "l1", "l2" y "l3"
//Se pide el primer lado y se guarda en l1;
l1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite lado 1"));
obj.setLado1(l1);//se llama al metodo modificador de lado 1 y se encapsula "l1"
//Se pide el primer lado y se guarda en l1;
l2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite lado 2"));
obj.setLado2(l2);//se llama al metodo modificador de lado 2 y se encapsula "l2"
//Se pide el primer lado y se guarda en l1;
l3 = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite lado 3"));
obj.setLado3(l3);//se llama al metodo modificador de lado 3 y se encapsula "l3"
//Se muestra en pantalla el perimetro
JOptionPane.showMessageDialog(null, "El perimetro es: " + obj.perimetro());
//Se muestra en pantalla el semiperimetro
JOptionPane.showMessageDialog(null, "El semiperimetro es: " + obj.semiperimetro());
//Se muestra en pantalla el area
JOptionPane.showMessageDialog(null, "El area es: " + obj.area());
}
}
//se incluira el paquete "math" para utilizar el metodo sqrt()
//y el paquete pow para el metodo pow(), los utilizaremos para poder realizar
//la raiz cuadrada y elevar un numero a un exponente, ya que es importante
//para calcular el area, perimetro y altura del triangulo.
import static java.lang.Math.sqrt;
import static java.lang.Math.pow;
public class Triangulo
{
//se definen los atributos privados:
private double lado1;//lado 1 de tipo double
private double lado2;//lado 2 de tipo double
private double lado3;//lado 3 de tipo double
Triangulo()
{
//Se le asigna el valor de 0 a lado1, lado2 y lado3 en el constructor
lado1 = 0;
lado2 = 0;
lado3 = 0;
}
public double perimetro()
{
//El perimetro de un triangulo es la suma de todos sus lados
return lado1 + lado2 + lado3;
}
public double semiperimetro()
{
//El semiperimetro de un triangulo es: la suma de todos sus lados dividido entre 2.
return (lado1 + lado2 + lado3) / 2;
}
public double area()
{
double a;
//Si el triangulo tiene los tres lados iguales, entonces es un triangulo equilatero:
if(lado1 == lado2 && lado1 == lado3)
{
//la formula para calcular el area de un triangulo equilatero es:
a = sqrt(3) / 4 * lado1;//como todos los lados seran iguales no importa cual lado se tome...
return a;//retornamos el valor de la operación.
}
//si el lado 1 es igual al lado 3 entonces es un triangulo escaleno
else if(lado1 != lado2 && lado1 != lado3)
{
//la formula para calcular el area de un triangulo escaleno es: A=b*c/2
a = (lado2 * lado3) / 2;//retornamos el valor de la operación.
return a;
}
else//Sino significa que el tringulo tiene solo dos lado iguales, y seria un trianguilo isósceles
{
//La formula para calcular el area de un triangulo isoceles es:
//A = ( b * √(a^2 - (2^2 / 4)) ) / 2
a = (lado2 * sqrt(pow(3, 2) - (pow(2, 2) / 4))) / 2;
return a;//retornamos el valor de la operación.
}
}
//Implementacion de los metodos Setters y Getters de los atributos de la clase
public void setLado1(double n)
{
lado1 = n;
}
public double getLado1()
{
return lado1;
}
public void setLado2(double n)
{
lado2 = n;
}
public double getLado2()
{
return lado2;
}
public void setLado3(double n)
{
lado3 = n;
}
public double getLado3()
{
return lado3;
}
}