Foro de elhacker.net

Programación => Java => Mensaje iniciado por: miguel_12 en 28 Mayo 2013, 20:04 pm



Título: Duda Ciclo-for
Publicado por: miguel_12 en 28 Mayo 2013, 20:04 pm
Hola a todos soy nuevo en el foro.
Estaba realizando unos ejercicios propuestos de un curso de java que estoy tomando el problema a resolver es el siguiente
"Confeccionar un programa que lea n pares de datos, cada par de datos corresponde a la medida de la base
y la altura de un triángulo. El programa deberá informar:
a) De cada triángulo la medida de su base, su altura y su superficie.
b) La cantidad de triángulos cuya superficie es mayor a 12. "

Hasta ahora lo que he echo es calcular la superficie y mostrarla, tambien mostrar los triangulos con superficies mayores a 12, el problema llega cuando tengo que mostrar la base y la altura de cada triangulo.Como lo podria hacer????


Muchas gracias a todos por su precioso tiempo  ;D ;D.
Aclaro que apena estoy empezando en esto de la programacion.
El codigo que llevo hasta ahora es el siguiente:
Código
  1. import javax.swing.*;
  2. public class Problemas1 {
  3.  
  4. public static void main(String[] args) {
  5.  
  6. float base_n = 0;
  7. float altura_n = 1;
  8. float superficie_n = 0;
  9. int c= 0;
  10. int dato_n = 1;
  11. String dato = JOptionPane.showInputDialog("A cuantos triangulo le desea averiguar la superficie???");
  12. dato_n=Integer.parseInt(dato);
  13. int cantidad = 0;
  14. for (c=1;c<=dato_n;c ++){
  15.  
  16. String base = JOptionPane.showInputDialog("Digite la base del triangulo"+" Triangulo=>"+c);
  17. String altura = JOptionPane.showInputDialog("Digite la altura del triangulo"+"Triangulo=>"+c);
  18.  
  19. base_n = Float.parseFloat(base);
  20. altura_n =Float.parseFloat(altura);
  21.  
  22. superficie_n = altura_n*base_n/2;
  23.  
  24. JOptionPane.showMessageDialog(null,"la superficie es: "+superficie_n);
  25.  
  26. if (superficie_n>12){
  27.  
  28. cantidad = cantidad + 1;
  29. }
  30.  
  31. }
  32.  
  33. JOptionPane.showMessageDialog(null," Los triangulos con superficies mayores a 12 son: "+cantidad);
  34.  
  35. }
  36.  
  37. }
  38.  
  39.  


Título: Re: Duda Ciclo-for
Publicado por: YairMon en 28 Mayo 2013, 20:30 pm
Por favor explicate mejor, no puedo entenderte

¿Quieres mostrar la base y altura de cada uno?

en que momento?
podrias agregar una linea de codigo joptionpane:



Código
  1.  
  2. String mensaje = "Triangulo de " + base_n + " de base";
  3. mensaje += "\nY de " + altura_n + " de altura";
  4. JOptionPane.showMessageDialog(null, mensaje + "\nSu superficie es: " +superficie_n);
  5. // '\n' es un salto de linea (Por si no lo sabes)
  6.  


Título: Re: Duda Ciclo-for
Publicado por: miguel_12 en 28 Mayo 2013, 20:40 pm
quiero mostrar la base y la altura de todos los triangulos ingresados anteriormente espero me entiendas


Título: Re: Duda Ciclo-for
Publicado por: miguel_12 en 28 Mayo 2013, 21:05 pm
Muchas graciass por tu ayuda :D :D :D


Título: Re: Duda Ciclo-for
Publicado por: YairMon en 28 Mayo 2013, 21:26 pm
Hmm


Título: Re: Duda Ciclo-for
Publicado por: YairMon en 28 Mayo 2013, 21:45 pm
Todo depende de cuantos triangulos agregues:

Osea puedes hacer un Vector de 'floats' (o varios) que almacene todos los datos que ingresaron

entonces:


Código
  1. import javax.swing.*;
  2.  
  3. public class Problemas1 {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. float base_n = 0;
  8. float altura_n = 1;
  9. float superficie_n = 0;
  10. int c = 0;
  11. int dato_n = 1;
  12. .showInputDialog("A cuantos triangulo le desea averiguar la superficie???");
  13. dato_n = Integer.parseInt(dato);
  14. // Creo dos vectores de 'float' de tamaño del numero de triangulos
  15. // Que almacenen todas las bases y las alturas
  16. float[] bases = new float[dato_n];
  17. float[] alturas = new float[dato_n];
  18.  
  19. int cantidad = 0;
  20. for (c = 1; c <= dato_n; c++) {
  21.  
  22. String base = JOptionPane.showInputDialog("Digite la base del triangulo Triangulo=>" + c);
  23. String altura = JOptionPane.showInputDialog("Digite la altura del triangulo Triangulo=>" + c);
  24.  
  25. base_n = Float.parseFloat(base);
  26. altura_n = Float.parseFloat(altura);
  27.  
  28. // Por cada iteracion del for se van agregando las alturas
  29. // y las bases ( pos c-1 ya que el arreglo empieza en 0 )
  30. bases[c-1] = base_n;
  31. alturas[c-1] = altura_n;
  32.  
  33. superficie_n = altura_n * base_n / 2;
  34.  
  35. JOptionPane.showMessageDialog(null, "\nSu superficie es: " +superficie_n);
  36.  
  37. if (superficie_n > 12) {
  38.  
  39. cantidad = cantidad + 1;
  40. }
  41.  
  42. }// <- cierre del for
  43.  
  44. // Creo un string donde se va a guardar un largo mensaje
  45. // Con todas las alturas y bases de todos los triangulos ingresados
  46. String mensaje = "";
  47. // Abro otro 'for' para mostrar todas las alturas
  48. // Desde 'i' igual a 0 hasta el tamanio de las bases (tambien puede ser de las alturas)
  49. for(int i = 0; i < bases.length; i++){
  50. // A mensaje le sumo el numero del triangulo (i+1) porque empieza en 0
  51. mensaje += "Triangulo " + (i+1);
  52. // Le sumo la base y la altura
  53. mensaje += " - base: " + bases[i] + " - altura: " + alturas[i];
  54.  
  55.  
  56. // Y un salto de linea
  57. mensaje += "\n";
  58. }
  59.  
  60. // Muestro al final un mesaje con el string 'mensaje'
  61. JOptionPane.showMessageDialog(null, mensaje);
  62.  
  63.  
  64.  
  65. JOptionPane.showMessageDialog(null, " Los triangulos con superficies mayores a 12 son: "
  66. + cantidad);
  67.  
  68. }
  69.  
  70. }
  71.  


PD: Tambien puedes agregar otro arreglo de floats con los datos de la superficie, y lo llenas de igual manera que las bases y alturas , y simplemente en el otro 'for' añades una linea.

Algo como: mensaje += "- Superficie: " + superficies ;

Si entiendes el codigo será facil añadirlo

(Presioné 'Quote' en vez de 'Modify' y postee dos veces, lo siento  :(  )


Título: Re: Duda Ciclo-for
Publicado por: miguel_12 en 29 Mayo 2013, 18:21 pm
Genial muchas gracias te lo agradezco mucho  :D ;D ;-) ;-)

resolviste mi problema pero yo aun no manejo ventores apenas estoy empezando en esto

muchas gracias