Necesito ayuda con esto, ni siquiera creo que sea correcto, ya que me cuesta entender los bucles. Me pidieron que creara un programa Javascript que solicita cualquier cantidad y muestra la cantidad de dulces de hielo que se pueden comprar y el cambio, si corresponde. Mi problema es que no se si "mientras" es lo correcto poner o "hacer" o si me falta algo Gracias de antemano. Aquí está mi código
function minitask() { var m = document.getElementById("money").value; var c = 8.5; m = m - c; c = c + 1; while (m <= c) alert("You can buy " + c + " Icecandy and your change is " + m); }
<input type="text" id="money" name= "Enter any amount"> <button onclick="minitask()">Calculate</button>
Hay algunos problemas en su código tanto desde el punto de vista algorítmico como desde el punto de vista del diseño de software.
No hay necesidad de usar un bucle aquí, puedes hacer una división simple que te dará la cantidad de dulces que puedes comprar:
available money / price for one candy = number of candies to buy
Necesita floor()
el resultado ya que no puede comprar, por ejemplo, 1.2
caramelos.
El cambio se puede calcular entonces por
change = available money - number of candies to buy * price of one candy
const
en lugar de var
para declarar variables.type=number
para <input>
. También hay más opciones, como establecer un min
y max
, lo que tendría sentido en su caso, ya que, por ejemplo, no hay dinero negativo . Ver documentos de MDN .<input>
, use el atributo de placeholder
de posición, no el name
.valueAsNumber
en un elemento <input>
que recuperará un número de inmediato en lugar de una string
. Junto con el number
de tipo de entrada, esto asegurará que siempre obtenga un número devuelto. function minitask() { const moneyAvailable = document.getElementById("money").valueAsNumber; if(moneyAvailable < 0) { alert(`You cannot buy anything with negative money!`) return; } const priceForIceCandy = 8.5; const noIceCandies = Math.floor(moneyAvailable / priceForIceCandy); const change = moneyAvailable - noIceCandies * priceForIceCandy; alert(`You can buy ${noIceCandies} Icecandy and your change is ${change}`); }
<input type="number" id="money" min="0" placeholder="Enter any amount"> <button onclick="minitask()">Calculate</button>
Primero, debe verificar si el dinero es suficiente para comprar algo.
If
es así debes dividir la cantidad de dinero por el costo de un caramelo, es cierto que el clásico divisor /
no da el cambio pero hay un operador que si lo hace, que se llama modulo
luego devolver toda esa información al usuario
De lo Else
, si el usuario no tiene suficiente dinero, ¡dígale que necesita más!