Autor Tema: Metodos Numericos clase angulo y operaciones con angulos en radianes con Java  (Leído 8948 veces)

charmedever

  • Puede escribir pero no modificar ni borrar
  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Hola q tal amigos buenas noches podrian ayudarme con este programa en lenguaje java:
Elaborar la clase Angulo, que modela angulos en (0° - 360°).
La clase debe ofrecer su equivalencia en radianes y otro metodo para sumar al angulo un valor entero.
Elaborar una clase OperacionesAngulos que contenga metodos estaticos para la suma y resta de angulos (un angulo nunca debe exceder 360°).
Crear una clase UsaAngulo para probar el siguiente codigo:
Angulo angulo = new Angulo (45);
System.out.println("Radianes: "+angulo.radianes());
angulo.suma(360);
System.out.println("Angulo mas cinco: "+angulo);
Angulo otroangulo = new Angulo(270);
Angulo resSuma = OperacionesAngulos.suma(angulo, otroangulo);
System.out.println("Suma de Angulos: "+resSuma);
Angulo resResta = OperacionesAngulos.resta(angulo, otroangulo);
System.out.println("Resta de Angulos: "+resResta);
Anexo el codigo
Código: [Seleccionar]
public class Angulo
{
    private double angRadianes;
    private int angulo;
    public Angulo(int angRadianes)
    {
        this.angRadianes = angRadianes;
    }
    public void setRadianes(int an)
    {
        if (an < 360)
        {
            angRadianes = Math.toRadians(an);
        }
        else
            System.out.println("No puede llevarse a cabo la conversion, angulo muy grande");
    }
    public double getRadianes()
    {
        return angRadianes;
    }
    public int suma (int numero)
    {
        angRadianes += numero;
        return numero;
    }
}

public class OperacionesAngulos
{
    public static Angulo suma(Angulo a, Angulo b)
    {
        // Comprobaciones por si la suma de los radianes de a y b es mayor a 360
        Angulo sumaResultado = null;
        int c = a.getRadianes() + a.getRadianes();
        if (c < 360)
             sumaResultado = new Angulo (c);
        return sumaResultado;
    }
    public static Angulo resta(Angulo a, Angulo b)
    {
        // Comprobaciones por si la suma de los radianes de a y b es mayor a 360
        Angulo restaResultado = null;
        int c = a.getRadianes() - a.getRadianes();
        if (c < 360)
             restaResultado = new Angulo (c);
        return restaResultado;
    }
}

public class UsaAngulo
{
    public static void main (String []args)
    {
        Angulo a = new Angulo (45);
        a.setRadianes(45);
        System.out.println("Angulo en Radianes: "+a);
        a.suma(5);
        System.out.println("Angulo mas cinco: "+a);
        Angulo otroangulo = new Angulo(270);
        Angulo resSuma = OperacionesAngulos.suma(a, otroangulo);
        System.out.println("Suma de Angulos: "+resSuma);
        Angulo resResta = OperacionesAngulos.resta(a, otroangulo);
        System.out.println("Resta de Angulos: "+resResta);
    }
}


Gracias de antemano
« Última modificación: 21 de Septiembre 2014, 11:33 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Metodos Numericos
« Respuesta #1 en: 28 de Septiembre 2012, 23:32 »
Empezamos definiendo la clase Angulo y comprobando que funciona correctamente. Una vez comprobemos esto continuaremos avanzando.

public class Angulo {

    //El angulo está en grados, podremos obtener su equivalencia en radianes usando un método
    private int angulo; //Tomamos el ángulo como entero, aunque no tendría por qué ser así
   
   
    public Angulo(int angulo) {
        this.angulo = angulo;
    }
   
    //Devuelve la equivalencia del ángulo en radianes
    public double radianes() {
        double angRadianes = 0;
        if (angulo < 360) { angRadianes = Math.toRadians(angulo); }
        else {
            System.out.println("Valor de ángulo no permitido");}
    return angRadianes;
        }
       
    //Método que permite sumar un entero al ángulo    
    public int suma (int numero) {
        angulo = angulo + numero;
        return angulo;
    }
}



Hay una parte del enunciado que no veo coherente:

Angulo angulo = new Angulo (45);
System.out.println("Radianes: "+angulo.radianes());
angulo.suma(360);
System.out.println("Angulo mas cinco: "+angulo);

¿Angulo más cinco? ¿Dónde está el más cinco?
« Última modificación: 28 de Septiembre 2012, 23:33 por Ogramar »

charmedever

  • Puede escribir pero no modificar ni borrar
  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Re:Metodos Numericos
« Respuesta #2 en: 28 de Septiembre 2012, 23:38 »
En esa parte y para adelante fue donde me confundi  ???
Lo que aparece de color azul es lo unico q tengo correcto?

charmedever

  • Puede escribir pero no modificar ni borrar
  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
Re:Metodos Numericos
« Respuesta #3 en: 29 de Septiembre 2012, 04:11 »

Hola q tal amigos buenas noches podrian ayudarme con este programa en lenguaje java:
Elaborar la clase Angulo, que modela angulos en (0° - 360°).
La clase debe ofrecer su equivalencia en radianes y otro metodo para sumar al angulo un valor entero.
Elaborar una clase OperacionesAngulos que contenga metodos estaticos para la suma y resta de angulos (un angulo nunca debe exceder 360°).

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Metodos Numericos
« Respuesta #4 en: 29 de Septiembre 2012, 15:13 »
Yo creo que donde te has confundido es en el concepto de ángulo. Un ángulo se puede expresar en grados sexagesimales, en cuyo caso los valores habituales son entre 0 y 360 grados, o en radianes, en cuyo caso los valores habituales son múltiplos del número Pi. Así por ejemplo 180 grados son Pi radianes, 90 grados Pi/2 radianes, etc. El número Pi es la relación entre la longitud del desarrollo de un círculo y su diámetro y vale 3,1417... entonces los radianes tal y como los devolverá el ordenador normalmente serán decimales largos. Y como estás limitando los grados de 0 a 360 los radianes estarán comprendidos entre 0 y 2*pi, es decir, entre 0 y 6,28 aproximadamente.

Por ahí has escrito esto: // Comprobaciones por si la suma de los radianes de a y b es mayor a 360, pero lo que tienes que comprobar no es que los radianes no superen 360, sino que el ángulo sexagesimal no supere 360.

Lo que te puse fue cómo plantearía yo el problema, en azul el código y en marrón los comentarios, lo que pasa es que no me dio tiempo a hacerlo todo.

Aquí añado algo más (también he añadido un método para poder recuperar el valor del ángulo sexagesimal) de cómo pienso yo que podría ir quedando:

La clase Angulo:

Código: [Seleccionar]
public class Angulo {

    //El angulo está en grados, podremos obtener su equivalencia en radianes usando un método
    private int angulo; //Tomamos el ángulo como entero, aunque no tendría por qué ser así
   
   
    public Angulo(int angulo) {
        this.angulo = angulo;
    }
   
    //Devuelve la equivalencia del ángulo en radianes
    public double radianes() {
        double angRadianes = 0;
        if (angulo < 360) { angRadianes = Math.toRadians(angulo); }
        else {
            System.out.println("Valor de ángulo no permitido");}
    return angRadianes;
        }
       
    //Método que permite sumar un entero al ángulo   
    public int suma (int numero) {
        angulo = angulo + numero;
        return angulo;
    }
   
    public int getAngulo() {return angulo;}
}

Y la clase operacionesAngulos:

Código: [Seleccionar]
public class OperacionesAngulos {

    public static Angulo suma(Angulo a, Angulo b) {
        // Comprobaciones por si la suma de los ángulos de a y b es mayor a 360
        Angulo sumaResultado = null;
        int suma = a.getAngulo() + b.getAngulo();

        if (suma <= 360 && suma >=0) {
            sumaResultado = new Angulo (suma);
        }
        else {
            System.out.println("Valor de ángulo no permitido");
        }

        return sumaResultado;
    }

    public static Angulo resta(Angulo a, Angulo b) {
        // Comprobaciones por si la suma de los ángulos de a y b es mayor a 360
        Angulo restaResultado = null;
        int resta = a.getAngulo() - b.getAngulo();

        if (resta <= 360 && resta >=0) {
            restaResultado = new Angulo (resta);
        }

        else {
            System.out.println("Valor de ángulo no permitido");
        }

        return restaResultado;

    }
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".