10/04/2016

Ejercicio 20

Haga un algoritmo que determine los parámetros A, B y C de una recta que pasa por los puntos (X1, Y1) y (X2, Y2).
La ecuación de la recta es: AX + BY + C = 0.


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

using namespace std;

int main(void)
{
    //Se crea un objeto de la clase Recta (Instanciaciación) 
    Recta *obj = new Recta();

    float x1,y1,x2,y2;//se definen 4 las variables de tipo float "x1", "y1", "x2", "y2". 

    cout << "Digite el valor de X1: ";//Se pide que se digite el valor de X1 
    cin >> x1;//se guarda el valor digitado en x1 
    obj->setX1(x1);//se llama el metodo modificador setX1() y se encapsula "x1" 

    cout << "Digite el valor de Y1: ";//Se pide que se digite el valor de Y1 
    cin >> y1;//se guarda el valor digitado en y1 
    obj->setY1(y1);//se llama el metodo modificador setY1() y se encapsula "y1" 

    cout << "Digite el valor de X2: ";//Se pide que se digite el valor de X2 
    cin >> x2;//se guarda el valor digitado en x2 
    obj->setX2(x2);//se llama el metodo modificador setX2() y se encapsula "x2" 

    cout << "Digite el valor de Y2: ";//Se pide que se digite el valor de Y2 
    cin >> y2;//se guarda el valor digitado en y2 
    obj->setY2(y2);//se llama el metodo modificador setY2() y se encapsula "y2" 

    //se llama al metodo para calcular el parametro de A 
    cout << "El valor de A es: " << obj->calcularA() << endl;

    //se llama al metodo para calcular el parametro de B 
    cout << "El valor de B es: " << obj->calcularB() << endl;

    //se llama al metodo para calcular el parametro de C 
    cout << "El valor de C es: " << obj->calcularC() << endl;
}
     

#ifndef RECTA_H
#define RECTA_H


class Recta
{
    public:
        Recta();
        virtual ~Recta();
        //Se definen los metodos publicos: 
        float calcularA();//calcularA() de tipo float para calcular el parametro A 
        float calcularB();//calcularB() de tipo float para calcular el parametro B 
        float calcularC();//calcularC() de tipo float para calcular el parametro C 

        //se definen los metodos Setter y Getters de los atributos de la clase:
        //x1, y1, x2, y2, a, b, c 
        void setX1(float n);
        float getX1();
        void setY1(float n);
        float getY1();
        void setX2(float n);
        float getX2();
        void setY2(float n);
        float getY2();
    protected:

    private:
        //se definen los atributos privados: 
        float x1;//x1 de tipo float 
        float y1;//y1 de tipo float 
        float x2;//x2 de tipo float 
        float y2;//y2 de tipo float 
};

#endif // RECTA_H
     

#include "Recta.h"

//Implementacion del metodo constructor de la clase 
Recta::Recta()
{
    //se le asigna valor 0 por defecto en el constructor a las variables, x1, y1, x2, y2 
    x1 = 0;
    y1 = 0;
    x2 = 0;
    y2 = 0;
}

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

//La formula para calcular estos parametros basicamente es esta:
//  X-X1     Y-Y1
// ------ = ------
// X2-X1    Y2-Y1

//Implementacion del metodo para calcular el parametro A 
float Recta::calcularA()
{
    float a;
    a = y2 - y1;
    return a;
}

//Implementacion del metodo para calcular el parametro B 
float Recta::calcularB()
{
    float b;
    b = x2 - x1;
    return b;
}

//Implementacion del metodo para calcular el parametro C 
float Recta::calcularC()
{
    float c;
    c = (-x1 * calcularA()) + (y1 * (x2 - x1));
    return c;
}

//Implementacion de los metodos Setter y Getters de los atributos de la clase 
void Recta::setX1(float n)
{
    x1 = n;
}

float Recta::getX1()
{
    return x1;
}

void Recta::setY1(float n)
{
    y1 = n;
}

float Recta::getY1()
{
    return y1;
}

void Recta::setX2(float n)
{
    x2 = n;
}

float Recta::getX2()
{
    return x2;
}

void Recta::setY2(float n)
{
    y2 = n;
}

float Recta::getY2()
{
    return y2;
}
     

//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 Recta (Instanciaciación) 
        Recta obj = new Recta();
        
        //se definen 4 las variables de tipo float "x1", "y1", "x2", "y2". 
        float x1, y1, x2, y2;
        
        //Se pide que se digite el valor de X1 y se guarda en la variable "x1" (Se convierte la variable a tipo float
        //porque el metodo showInputDialog convierte el dato digitado a String) 
        x1 = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite el valor de X1:"));
        obj.setX1(x1);//se llama el metodo modificador setX1() y se encapsula "x1" 
        
        //Se pide que se digite el valor de Y1 y se guarda en la variable "y1" 
        y1 = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite el valor de Y1:"));
        obj.setY1(y1);//se llama el metodo modificador setY1() y se encapsula "y1" 
        
        //Se pide que se digite el valor de X2 y se guarda en la variable "x2" 
        x2 = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite el valor de X2:"));
        obj.setX2(x2);//se llama el metodo modificador setX2() y se encapsula "x2" 
        
        //Se pide que se digite el valor de Y2 y se guarda en la variable "y2" 
        y2 = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite el valor de Y2:"));
        obj.setY2(y2);//se llama el metodo modificador setY2() y se encapsula "y2" 
        
        //se llama al metodo para calcular el parametro de A 
        JOptionPane.showMessageDialog(null, "El valor de A es: " + obj.calcularA());
        //se llama al metodo para calcular el parametro de B 
        JOptionPane.showMessageDialog(null, "El valor de B es: " + obj.calcularB());
        //se llama al metodo para calcular el parametro de C 
        JOptionPane.showMessageDialog(null, "El valor de C es: " + obj.calcularC());
    }
}
     

public class Recta
{
    //se definen los atributos privados: 
    private float x1;//x1 de tipo float 
    private float y1;//y1 de tipo float 
    private float x2;//x2 de tipo float 
    private float y2;//y2 de tipo float 

    public Recta()
    {
        //se le asigna valor 0 por defecto en el constructor a las variables, x1, y1, x2, y2 
        x1 = 0;
        y1 = 0;
        x2 = 0;
        y2 = 0;
    }
    
    //La formula para calcular estos parametros basicamente es esta:
    //  X-X1     Y-Y1
    // ------ = ------
    // X2-X1    Y2-Y1
    
    //Implementacion del metodo para calcular el parametro A 
    public float calcularA()
    {
        float a;
        a = y2 - y1;
        return a;
    }
    
    //Implementacion del metodo para calcular el parametro B 
    public float calcularB()
    {
        float b;
        b = x2 - x1;
        return b;
    }
    
    //Implementacion del metodo para calcular el parametro C 
    public float calcularC()
    {
        float c;
        c = (-x1 * calcularA()) + (y1 * (x2 - x1));
        return c;
    }
    
    //Implementacion de los metodos Setter y Getters de los atributos de la clase 
    public void setX1(float n)
    {
        x1 = n;
    }

    public float getX1()
    {
        return x1;
    }

    public void setY1(float n)
    {
        y1 = n;
    }

    public float getY1()
    {
        return y1;
    }

    public void setX2(float n)
    {
        x2 = n;
    }

    public float getX2()
    {
        return x2;
    }

    public void setY2(float n)
    {
        y2 = n;
    }

    public float getY2()
    {
        return y2;
    }
}