Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: charmedever en 28 de Septiembre 2012, 19:57
-
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
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
-
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?
-
En esa parte y para adelante fue donde me confundi ???
Lo que aparece de color azul es lo unico q tengo correcto?
-
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°).
-
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:
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:
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;
}
}