Obtuve el siguiente ejercicio en Javascript:
Recibir números enteros del usuario, hasta que ingrese un número que % 7 sin resto. Para cada número recibido, indique si es positivo, negativo o 0. al insertar un número % de 7 sin resto, finaliza el programa.
aquí está mi código:
let num = +prompt("give us a number") while (num % 7 != 0) { if (num > 0){ document.write("positive ") num = +prompt("give us a number" ) } else if (num < 0) { document.write("negative ") num = +prompt("give us a number" ) } else if (num === 0) { document.write("zero ") num = +prompt("give us a number" ) }La cuestión es que, cuando el usuario ingresa 0, obviamente no obtendré la salida "cero", porque 0% 7 es 0 restante, por lo que ni siquiera entra en el ciclo ... entonces, ¿cómo puedo generar "cero" cuando el usuario ingresa 0 ?
let num = +prompt("give us a number") while (num % 7 != 0) { if (num > 0){ document.write("positive ") if(num % 7 == 0) { break; } else { num = +prompt("give us a number") } } else if (num < 0) { document.write("negative ") if(num % 7 == 0) { break; } else { num = +prompt("give us a number") } } else if (num === 0) { document.write("zero ") if(num % 7 == 0) { break; } else { num = +prompt("give us a number") } } }O saca la else if (num == 0) antes del bucle while
dado que
0 % 7 == 0estrue, debería satisfacer el ejercicio incluso si no está en el bucle.
if (num == 0) { // do stuff } while (/* condition */) { // do other stuff } O agregue la restricción num == 0 en la condición while .
while (num == 0 || num % 7 != 0) { // do stuff } El primero no entrará en el bucle, el segundo hará que el bucle salga en num == 0 porque ambos implican que es una división de módulo correcta.
Puede hacer ambas cosas si desea optimizar el uso de la memoria (obviamente, no sería un problema en esta escala).
Esta puede ser una forma posible de lograr el objetivo deseado.
Ejemplo de código Este ejemplo usa alert para mostrar el resultado, en lugar de document.write .
let num = 1; while (!num || num % 7) { num = +prompt('enter a number'); if (num && num % 7) { alert( `${num} is ${num > 0 ? 'positive' : 'negative' }` ); } else if (!num) alert('num is zero'); };Explicación
num a 1while que se ejecutará siempre que num no sea 0 (falso, técnicamente) y num % 7 no sea 0.prompt en la variable numnum es verdadero (es decir, distinto de cero) y num % 7 es verdadero (es decir, distinto de cero), muestra una alert si num es positivo (si > 0) o negativo (de lo contrario). Esto se logra mediante el uso de ` símbolo de acento grave/literal de plantilla y ?: operador ternario .num es cero, aparecerá la alert correspondienteFragmento de código
let num = 1; while (!num || num % 7) { num = +prompt('enter a number'); if (num && num % 7) { alert( `${num} is ${num > 0 ? 'positive' : 'negative' }` ); } else if (!num) alert('num is zero'); };