elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Java / Ayuda con esto en: 24 Enero 2010, 06:30 am
Hola chicos, me he perdido la practica de esta semana...

Me la enviaron y la realizé, solo que no se si esta como debe ser y alli si necesito ayuda...

La practica es la siguiente:

•   Definir una clase abstracta llamada Círculo con un atributo privado llamado radio, definir  el constructor y los métodos abstractos mostrar  y volumen el cual retornara un tipo double.
•   Definir una clase llamada Cilindro con un atributo privado llamado altura (double) y los métodos correspondientes.
•   Definir una clase llamada Esfera y los métodos correspondientes.
•   Tanto la clase Cilindro como la clase Esfera deben controlar la cantidad de objetos creados en cada una de esas clases.
Fuera del paquete Practica crear la clase principal con el método main( ), en el cual definirá variables del tipo Circulo que  referenciarán  objetos del tipo Cilindro y Esfera
Una vez creados los objetos mostrar la cantidad de objetos de cada tipo creado y sus atributos, posteriormente eliminar un objeto del tipo que sea y seguido mostrar la cantidad de objetos de ese tipo que quedan.


Lo que hice fue:

Código
  1. import practica.*;
  2. public class principal {
  3.  
  4. /**
  5. * Method main
  6. *
  7. *
  8. * @param args
  9. *
  10. */
  11. public static void main(String[] args) {
  12. int x;
  13. Circulo c[]= new Circulo [10];
  14. c[0]=new Cilindro (3.4,3);
  15. c[1]=new Esfera (7.36);
  16. c[2]=new Cilindro (5.25,3);
  17. c[3]=new Esfera (6);
  18. c[4]=new Cilindro (4,5);
  19. c[5]=new Esfera (2.5);
  20. c[6]=new Cilindro (2,10);
  21. c[7]=new Esfera (27);
  22. c[8]=new Cilindro (10,2);
  23. c[9]=new Esfera (4);
  24. System.out.println ("Cantidad de Cilindros: "+Cilindro.cilt());
  25. System.out.println ("Cantidad de Esferas: "+Esfera.cesft());
  26.  
  27. for (x=0;x<c.length;x++){
  28. c[x].mostrar();
  29. System.out.println ("Volumen: "+c[x].volumen());
  30.  
  31. }
  32. c[3]=null;
  33. System.gc();
  34. System.out.println ("Cantidad de Esferas Restantes: "+Esfera.cesft());
  35.  
  36. }
  37. }
  38.  

Código
  1. package practica;
  2.  
  3.  
  4. public abstract class Circulo {
  5. private double radio;
  6.  
  7. public Circulo (double r){
  8. radio=r;
  9. }
  10.  
  11. public abstract void mostrar();
  12.  
  13.  
  14. public abstract double volumen ();
  15.  
  16. public double mradio (){
  17. return radio;
  18. }
  19. }
  20.  
Código
  1.  
  2. package practica;
  3.  
  4. public class Cilindro extends Circulo {
  5. private double altura;
  6. private static int cil=0;
  7.  
  8. public Cilindro (double r, double h){
  9. super (r);
  10. altura=h;
  11. cil++;
  12. }
  13. public void mostrar (){
  14. System.out.println ("Radio: "+mradio());;
  15. }
  16. public double volumen(){
  17. double vc;
  18. vc=3.1416*Math.pow(mradio(),2)*altura;
  19. return vc;
  20. }
  21. public static int cilt (){
  22. return cil;
  23. }
  24.  
  25. }
  26.  
  27.  
Código
  1. package practica;
  2.  
  3.  
  4. public class Esfera extends Circulo{
  5. private static int cesf=0;
  6. public Esfera (double r){
  7. super(r);
  8. cesf++;
  9. }
  10.  
  11. public void mostrar(){
  12. System.out.println ("Radio: "+mradio());
  13. }
  14. public double volumen (){
  15. double ve;
  16. ve=4*3.1416*Math.pow(mradio(),3);
  17. return ve;
  18. }
  19. public static int cesft(){
  20. return cesf;
  21. }
  22. protected void finalize (){
  23. System.out.println ("Se elimino una esfera");

Si alguien pudiera decirme que tengo malo, y ayudarme a arreglarlo, seria genial  :D
12  Programación / Java / Usando un metodo con variables de referencia? en: 16 Enero 2010, 00:10 am
Chicos, en la practica de java el prof no dijo mucho y ahora me confundi...

la practica es la siguiente:

Crear una clase llamada  Punto ( en el paquete Geo) la cual tendrá como atributos las coordenadas de un punto X y Y, estos atributos serán privados, así mismo se definirá un constructor que recibirá como  argumentos las coordenadas del punto.
A partir de la clase Punto se derivaran las siguientes clases:
Clase Círculo (en el paquete Geo) tendrá como atributo el radio del círculo, el correspondiente constructor y un método llamado mostrar que mostrara los valores de los atributos del círculo.
Clase Rectángulo (en el paquete Geo) tendrá como atributos el largo y el ancho del rectángulo, el correspondiente constructor y un método mostrar que mostrara todos los atributos del rectángulo.

Crear la clase Principal con el método main( ) en le cual se definirá un arreglo del tipo Punto de 4 elementos, cada  posición del arreglo referenciara en forma alterna un circulo  y un rectángulo. Los valores del los argumentos se suministraran directamente en el programa. Posteriormente  se mostraran dichos valores.


Puntos clave:

*no se puede incluir el " mostrar()" en punto, sin contenido alguno...yo lo hice y me ha dicho "eso arregla el problema, pero no es la solucion..."   >:(


al final, para mostrar el arreglo del main, este habia dicho en clase que se utilizaria un for como este:

Código
  1. for (i = 0; i <x.length; i++) {
  2. x[i].mostrar( );
  3.  

mas nunca dijo como se haría si la clase base no tenia el "mostrar()"... al final dijo que necesitaba, asignarle variables de referencia para poderlo imprimir? ayuda con esto...creo que no me da la idea...

esto es lo que hice en la practica...

Código
  1. import Geo.*;
  2. public class principal {
  3.  
  4. /**
  5. * Method main
  6. *
  7. *
  8. * @param args
  9. *
  10. */
  11. public static void main(String[] args) {
  12. int i;
  13. Punto f[]=new Punto [4];
  14. f[0]=new Circulo (3,4,4.3);
  15. f[1]=new Rectangulo (7,5,2,8);
  16. f[2]=new Circulo (10,3,7.8);
  17. f[3]=new Rectangulo (8,9,4,5);
  18. }
  19.  
  20.  
  21. }
  22.  
  23.  
  24. package Geo;
  25.  
  26. public class Punto {
  27. protected int x,y;
  28.  
  29. public Punto (int x1, int y1){
  30. x=x1;
  31. y=y1;
  32. }
  33. public int leerx (){
  34. return x;
  35. }
  36. public int leery (){
  37. return y;
  38. }
  39. }
  40.  
  41.  
  42. package Geo;
  43.  
  44. public class Circulo extends Punto{
  45. private double radio;
  46.  
  47. public Circulo (int x1, int y1, double r){
  48. super(x1,y1);
  49. radio=r;
  50. }
  51. public void mostrar(){
  52. System.out.println ("Posicion X: "+leerx());
  53. System.out.println ("Posicion Y: "+leery());
  54. System.out.println ("Radio: "+radio);
  55. }
  56. }
  57.  
  58.  
  59.  
  60. package Geo;
  61.  
  62. public class Rectangulo extends Punto{
  63. private double ancho,largo;
  64.  
  65. public Rectangulo (int x1,int y1,double a, double l){
  66. super(x1,y1);
  67. largo=l;
  68. ancho=a;
  69. }
  70. public void mostrar(){
  71. System.out.println ("Posicion X: "+leerx());
  72. System.out.println ("Posicion Y: "+leery());
  73. System.out.println ("Largo: "+largo);
  74. System.out.println ("Ancho: "+ancho);
  75. }
  76. }
  77.  

So, mi pregunta es, como utilizaria un metodo pasandole una variable como atributo para que este me imprima lo que esta dentro del arreglo?

Les agradeceria la ayuda...  :)
13  Programación / Java / Pregunta tonta sobre incremento, decremento y operaciones en: 23 Noviembre 2009, 22:42 pm
Chicos, hoy en el examen teorico había algo asi:

Si m=10 y n=5 diga cuanto vale p

p=m + n--

-------------------

p= --n * m
-------------------------
Segun yo...

P en la primera vale 14

y en la segunda vale 40...

Al parecer alguien le pregunto al profesor y este dijo que p en la primera no valia 14 sino 15...

mi pregunta es, realmente vale 15? pues

si lo ves como...
m=10 y le sumas n=5 y luego le quitas 1 =14
y si lo ves como
m=10 y le sumas n--=4, tambien vale 14...

podrian ayudarme con la duda?, si vale 14 o 15 y por que...  :huh:

Gracias
14  Programación / Java / Matriz de Strings, tengo un pequeño problema en: 19 Noviembre 2009, 02:32 am
Hola chicos, Tengo que hacer algo como esto...

Un Granjero tiene 3 parcelas divididas en partes iguales, con siembra de papas,tomates y zanahorias...
Calcular la cantidad de papas, tomates y zanahorias en total de las 3 parcelas...

Los datos se ingresarian asi "tomate 50 kgs", etc

            TomatesPapasZanahorias
Parcela 1
Parcela 2
Parcela 3
Intenté hacer algo como esto, pero en "calcular" me da "NumberException", ya verifiqué que lo que queda en "shorty" es solo el numero. El problema esta en la linea "sht=Integer.parseInt(shorty);"

Código
  1. package clase_apoyo;
  2. import java.io.*;
  3.  
  4. public class apoyo {
  5. /**
  6. * Method llenarmatriz
  7. *
  8. *
  9. * @return
  10. *
  11. */
  12. public static String[][] llenarmatriz() throws IOException {
  13. String m[][]= new String[2][2];
  14. int i,j;
  15. for (i=0;i<m.length;i++){
  16. System.out.println ("Parcela "+(i+1)+" ");
  17. for (j=0;j<m[0].length;j++){
  18. System.out.println ("Producto "+(j+1)+" y Peso (Sin Kg)");
  19. System.out.flush ();
  20. m[i][j] = en.readLine ();
  21. }
  22. }
  23. return m;
  24. }
  25.  
  26. /**
  27. * Method mostrar
  28. *
  29. *
  30. */
  31. public static void mostrar(String m[][]) {
  32. int i,j;
  33. for (i=0;i<m.length;i++){
  34. System.out.println ("Los datos almacenados son: ");
  35. System.out.println ("Parcela "+(i+1)+" ");;
  36. for (j=0;j<m[0].length;j++){
  37. System.out.println (" "+m[i][j]+" ");
  38.  
  39. }
  40. }
  41. }
  42.  
  43. /**
  44. * Method calcular
  45. *
  46. *
  47. */
  48. public static void calcular(String m[][]) {
  49. int i,j,k,p=0;
  50. int sum,sht=0;
  51. String choice;
  52. String shorty=null,title=null;
  53. for (i=0;i<m[0].length;i++){
  54. sum=0;
  55. for (j=0;j<m.length;j++){
  56. choice=m[j][i];
  57. for (k=0;k<choice.length();k++){
  58. if (choice.charAt(k)==' '){
  59. p=k;
  60. k=choice.length();
  61. title=choice.substring(0,p);
  62. }
  63. }
  64.  
  65. shorty=choice.substring(p);
  66. sht=Integer.parseInt(shorty);
  67. sum+=sht;
  68. }
  69. System.out.println (title+" total = "+sht);
  70. }
  71. }
  72. }
  73.  

15  Programación / Java / Inicializar matriz? en: 14 Noviembre 2009, 17:38 pm
Hello chicos, estaba haciendo este programa y creo que me enrede...me podrian ayudar?

 :-\

Lo que quiero hacer es que el usuario introduzca el numero de filas y de columnas, y esta "dimensionarse" luego de eso...

Ej = filas: 3
columnas: 2
matriz[3][2];
y trabajar con eso despues de alli

tenia pensado algo asi?
Código:
BufferedReader en = new BufferedReader(new InputStreamReader (System.in));
int [][]m;
int tam1,tam2;
System.out.print ("Inserte cantidad de filas y columnas de la matriz: ");
System.out.flush();
tam1 = Integer.parseInt (en.readLine());
System.out.print ("Inserte cantidad de columnas de la matriz: ");
System.out.flush();
tam2 = Integer.parseInt (en.readLine());
m = new int [tam1][tam2];

ademas, quiero saber como hago para que cuando llene la matriz con numeros aleatorios, el "for" agarre las dimensiones correctas

pues en vectores es algo asi
Código:
public static void llenar(int m[]) {
int i;
for (i=0;i<m.length;i++){
m[i]=(int)((51-1)*Math.random()+10);
}

}
}
y yo habia pensado algo muuy parecido lo cual era:
Código:
public static void llenar(int m[][]) {
int j,i;
for (i=0;i<m.length;i++){
for (j=0;j<m.length;j++){
m[i][j]=(int)((51-1)*Math.random()+10);
}

}
}

Gracias  :huh:
16  Programación / Java / Arreglar vector de menor a mayor? en: 11 Noviembre 2009, 23:42 pm
Chicos, yo de nuevo...Me pidieron que ordenara un vector de menor a mayor luego de leerlo, nunca lo habia hecho y creo que tengo la idea pero...no estoy segura? La cosa es que no se si existe algun metodo que lo haga directo, o tengo que hacerlo a mano? Habia pensado algo como esto:

Código:
	public static void ordenar(int v[],int o[]) {
int x,min=v[0];
int segundo=v[0];
int t=0;
for (x=1;x<v.length;x++){
min = Math.min(min,v[x]);
}
o[t]=min;
t++;

for (x=0;x<v.length;x++){
if ((segundo>min) && (segundo<v[x])){
segundo=v[x];
o[t]=segundo;
t++;
}
}
System.out.println("t vale: "+t);
System.out.println ("segundo es:"+segundo);

for (x=0;x<o.length;x++){
System.out.print(o[x]+" ");
  System.out.println ("\n");
}
}

Como ven, v es el vector original, y O es el vector ordenado...

las lineas de
Código:
System.out.println("t vale: "+t);
System.out.println ("segundo es:"+segundo);
solo son para "control" mio, ya que veo que el segundo "menor" valor no lo agarra, ni que se ejecuta la condicion del if...

pueden darme una mano?  :-[

Gracias...

P.D: Encontré un ejemplo en C# pero realmente no entendí  :-\ :-\
17  Programación / Java / Nueva en Java y tengo una pregunta? en: 10 Noviembre 2009, 05:13 am
Chicos, hice este programa...
Código:
import java.io.*;

public class mece2n {
/* Ejercicio #1, Guia Info 2:
*1. Leer dos números y mostrar todos los enteros comprendidos entre ellos.
*/

public static void main(String[] args) throws IOException {
int a,b,i;
BufferedReader en = new BufferedReader (new InputStreamReader (System.in));
System.out.println ("valor a debe ser mayor a valor b");
System.out.println ("Inserte valor a: ");
System.out.flush();
a = Integer.parseInt(en.readLine());
System.out.println ("\nInserte valor b: ");
System.out.flush();
b = Integer.parseInt(en.readLine());
if (a>b){
System.out.println ("\nel valor a debe ser mayor que el valor b");

}

System.out.println ("\nLos numeros entre " +a+ " y " +b+ " son:\n");
   for (i=a+1;i<b;i++){

      System.out.println (i);
   }

}
}

Y queria saber si habia alguna manera de 1.- En caso que el if se ejecute, luego de mostrar el mensaje, regrese a la instruccion anterior de leer los valores...

2.- En caso que la condicion del if siga siendo verdadera, repetir la instruccion

Código:
System.out.println ("valor a debe ser mayor a valor b");
System.out.println ("Inserte valor a: ");
System.out.flush();
a = Integer.parseInt(en.readLine());
System.out.println ("\nInserte valor b: ");
System.out.flush();
b = Integer.parseInt(en.readLine());
tantas veces como sea necesario, hasta que se inserten los valores correctos...

Perdonen, que quizas es una estupidez, este es el segundo "programa" que hago...me estoy iniciando  :rolleyes:
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines