Java - porque no es correcto lo programado

 
Vista:

porque no es correcto lo programado

Publicado por carlos (25 intervenciones) el 16/10/2018 10:22:18
el enunciado es el ejercicio calcula el precio con y sin descuento si tenemos en cuenta que la 2ª unidad esta al 70% y nuestras variables son precio y cantidad

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Scanner entrada = new Scanner(System.in);
System.out.print("introduzca el precio del producto: ");
precio = entrada.nextDouble();
System.out.print("introduzca el numero de unidades: ");
numeroUnidades = entrada.nextDouble();
 
costeSin = precio * numeroUnidades;
paquetesDe2 = (int) (numeroUnidades/2);
/* cada packs de 2 tiene un coste de 1´7 por el precio (el precio de la 1ª unidad + el 70% de la 2ª)
cogemos la parte entera del cociente del nº de unidades entre 2 (seria la cantidad de packs de 2 articulos que compramos*/
costeCon = (paquetesDe2 * 1.7 * precio)+ numeroUnidades % 2* precio;
/* si cogemos el resto de dicha division nos dara el nº de unidades fuera del pack 0 ó 1 y la multiplicamos por su precio
mas lo anterior nos deberia dar el coste con descuento */
System.out.print("el coste sin descuento es: "+costeSin+"el coste con descuento es: "+costeCon);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 2.301
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

porque no es correcto lo programado

Publicado por Kabuto (574 intervenciones) el 16/10/2018 13:04:50
Pero, ¿que problema tienes exactamente?
No soy muy bueno en matemáticas, pero diría que los cálculos matemáticos para los precios son los correctos.

Lo único que veo que falta ahí es declarar los tipos de variables, pero como no está el código completo, doy por hecho que ya lo has declarado en otro sitio.

Vamos, he copiado tu código añadiendo las declaraciones de tipos y dando un poco de formato al mensaje final para que no salgan números con enormes cadenas de decimales, y funciona correctamente.
Creo que el descuento sí se está calculando correctamente, pero repito que las matemáticas no son lo mío

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
 
		Scanner entrada = new Scanner(System.in);
 
		System.out.print("introduzca el precio del producto: ");
		double precio = entrada.nextDouble();
		System.out.print("introduzca el numero de unidades: ");
		int numeroUnidades = entrada.nextInt();
		entrada.close();
 
		double costeSin = precio * numeroUnidades;
		int paquetesDe2 = numeroUnidades / 2;
		/* cada packs de 2 tiene un coste de 1´7 por el precio (el precio de la 1ª unidad + el 70% de la 2ª)
		cogemos la parte entera del cociente del nº de unidades entre 2 (seria la cantidad de packs de 2 articulos que compramos*/
		double costeCon = (paquetesDe2 * 1.7 * precio) + numeroUnidades % 2 * precio;
		/* si cogemos el resto de dicha division nos dara el nº de unidades fuera del pack 0 ó 1 y la multiplicamos por su precio
		mas lo anterior nos deberia dar el coste con descuento */
		System.out.printf("El coste sin descuento es: %.2f \nEl coste con descuento es: %.2f", costeSin, costeCon);
 
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

porque no es correcto lo programado

Publicado por carlos (25 intervenciones) el 16/10/2018 14:59:34
el problema es que matematicamente no da el dato que deberia y no se porque porque esta bien planteado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

porque no es correcto lo programado

Publicado por Daniel (1 intervención) el 17/10/2018 04:20:33
Totalmente de acuerdo con lo dice Tom. Pensé que había un fallo en la fórmula pero no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

porque no es correcto lo programado

Publicado por Tom (1569 intervenciones) el 16/10/2018 15:55:02
Por si acaso, acostúmbrate a usar siempre paréntesis, y a comprobar (o forzar) los tipos:

1
costeCon = ((double)paquetesDe2 * 1.7 * precio) + ((numeroUnidades % 2) * precio);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar