Foros del Web » Programación para mayores de 30 ;) » Java »

Duda salida de un programa

Estas en el tema de Duda salida de un programa en el foro de Java en Foros del Web. Hola a tod@s, estoy en 1º de DAM (desarrolo de aplicaciones multiplataforma), un grado superior de FP, y el caso es que me han mandado ...
  #1 (permalink)  
Antiguo 23/04/2014, 16:44
Avatar de alejandcc  
Fecha de Ingreso: diciembre-2011
Ubicación: Plasencia
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 1
Duda salida de un programa

Hola a tod@s, estoy en 1º de DAM (desarrolo de aplicaciones multiplataforma), un grado superior de FP, y el caso es que me han mandado el siguiente ejercicio:

****************** ejercicio *******************************

En una empresa de China, hacen pelotas de aire para piscinas en los parques infantiles. Las pelotas se hacen con un molde
en forma de triangulo isosceles. De tal forma:

*
***
*****
*******
*********
cada pelota esta representado por un "*". el trabajo sera saber cuantas hay.

El jefe nos a encargado un programa para saber cuantas pelotas salen por cada molde.

Entrada

La entrada sera un numero entero positivo (>0 y <9001) que representa la altura del triángulo. EL programa terminara cuando el valor del número esté fuera de rango.

Salida

La salida sera el numero de pelotas que aparecen en el molde representado por un valor int.

Entrada de ejemplo

1
21
10
800
200
5
50
9000
100
200
0
Salida de ejemplo

1
441
100
640000
40000
25
2500
81000000
10000
40000

*******************fin de ejercicio ******************

El caso es que yo consigo hacer la misma salida con mi codigo, que es el siguiente:

******************* mi codigo ********************


package porpelotas;

import java.util.Scanner;


public class PorPelotas {


public static void main(String[] args) {
// TODO code application logic here
Scanner entrada = new Scanner(System.in);


int altura, i, suma;
altura=entrada.nextInt();


while((altura>0) && (altura<9001)){
suma=0;
i=0;
while(i<altura){

suma=suma+altura;

i++;
}
System.out.println(suma);
altura=entrada.nextInt();

}



//fin
}

}

******************** fin de mi código *********************

Lo curioso es que cuando subo mi código a la web donde subimos los ejercicios, en el cual hay un juez online, me dice que la compilación es correcta pero el ejercicio esta mal, cuando la salida es idéntica. No se si estaré pasando algo por alto.

Gracias de antemano
  #2 (permalink)  
Antiguo 24/04/2014, 02:05
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Duda salida de un programa

Da el resultado que se pide, pero no creo que sea correcto.

Por lo que parece si aumentas de 2 en 2 el número de pelotas por piso, el número de pelotas coincide con el doble del área del triángulo, que es lo que tú estás haciendo.

(5+5+5+5+5)=5*5=b*h=2*((b*h)/2)=2*Area triángulo.

Esto se cumple sólo cuando 2 pelotas más en cada piso, aunque no sé por qué.

Si se considerara como válido (si el triángulo es cómo te han dicho), la forma más correcta sería que hicieras directamente el cuadrado, no un while.

Por curiosidad, ¿cómo llegaste a la conclusión de que la suma de las pelotas es el cuadrado de la altura?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 25/04/2014, 04:26
Avatar de alejandcc  
Fecha de Ingreso: diciembre-2011
Ubicación: Plasencia
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Duda salida de un programa

Cita:
Iniciado por Xerelo Ver Mensaje
Da el resultado que se pide, pero no creo que sea correcto.

Por lo que parece si aumentas de 2 en 2 el número de pelotas por piso, el número de pelotas coincide con el doble del área del triángulo, que es lo que tú estás haciendo.

(5+5+5+5+5)=5*5=b*h=2*((b*h)/2)=2*Area triángulo.

Esto se cumple sólo cuando 2 pelotas más en cada piso, aunque no sé por qué.

Si se considerara como válido (si el triángulo es cómo te han dicho), la forma más correcta sería que hicieras directamente el cuadrado, no un while.

Por curiosidad, ¿cómo llegaste a la conclusión de que la suma de las pelotas es el cuadrado de la altura?
pues llegue a la conclusion dandole vueltas, ya que soy bastante cabezon, voy a probar lo que me indicaste y te comento, gracias.
  #4 (permalink)  
Antiguo 25/04/2014, 04:49
Avatar de alejandcc  
Fecha de Ingreso: diciembre-2011
Ubicación: Plasencia
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Duda salida de un programa

Hola de nuevo, he intentado lo que me dijiste, y aunque la salida es identica me sigue diciendo que la respuesta es incorrecta, este es el codigo:

package porpelotas;

import java.util.Scanner;


public class PorPelotas {


public static void main(String[] args) {
// TODO code application logic here
Scanner entrada = new Scanner(System.in);


int altura, i, suma;
altura=entrada.nextInt();


while((altura>0) && (altura<9001)){
suma=altura*altura;
//i=0;
//while(i<altura){
//suma=suma+altura;
//i++;
//}

System.out.println(suma);
altura=entrada.nextInt();

}



//fin
}

}
  #5 (permalink)  
Antiguo 25/04/2014, 05:35
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Duda salida de un programa

No me expliqué bien, no sé qué criterio sigue el validador, porque el resultado es correcto aunque sólo para líneas que se incrementan en 2. Lo del cuadrado era una mejor forma de hacerlo si el resultado fuese correcto.

Pero por ejemplo si el validador lo hiciese con líneas que se incrementan con 1, tu método no sirve.

Cita:
Si se considerara como válido (si el triángulo es cómo te han dicho), la forma más correcta sería que hicieras directamente el cuadrado, no un while.
De hecho con 1 sería lo lógico, porque con 2 el triángulo no es isósceles (lo pide el enunciado).

*
**
***

es isósceles

*
***
*****

este no.

Así que yo creo que tu triángulo y el ejemplo de salida no son correctos, porque no es isósceles y el resultado no se corresponde con el que daría uno.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 25/04/2014, 06:19
Avatar de alejandcc  
Fecha de Ingreso: diciembre-2011
Ubicación: Plasencia
Mensajes: 54
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Duda salida de un programa

Cita:
Iniciado por Xerelo Ver Mensaje
No me expliqué bien, no sé qué criterio sigue el validador, porque el resultado es correcto aunque sólo para líneas que se incrementan en 2. Lo del cuadrado era una mejor forma de hacerlo si el resultado fuese correcto.

Pero por ejemplo si el validador lo hiciese con líneas que se incrementan con 1, tu método no sirve.



De hecho con 1 sería lo lógico, porque con 2 el triángulo no es isósceles (lo pide el enunciado).

*
**
***

es isósceles

*
***
*****

este no.

Así que yo creo que tu triángulo y el ejemplo de salida no son correctos, porque no es isósceles y el resultado no se corresponde con el que daría uno.
Te entiendo, voy a preguntar en clase porque el enunciado no tiene logica.

Etiquetas: programa, salida, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:02.