Bucles Do...while

Lo que se pide
Como funciona
Realiza un script que le pida al usuario que telee la letra A (en mayúscula) y mientras no lo haga se lo vuelva a pedir. Usa un bulce do..while y la ventana alert para los mensajes
El usuario teclea b, el programa vuelve a pedirme que teclee una letra

let tecla = '';

do{

    tecla = prompt("Teclear letra mágica");

}while (tecla != 'A');

alert("Has acertado");

Este script usará un bucle do while para determinar si un número es primo o no. El numero tecleado deberá estar entre 0 y 100. Si es primo lo mostrará en una ventana alert
Si escribo 0 o 100 el programa me seguirá pidiendo un número

let numero, divisor=1, resto;
do{
     numero = parseInt(prompt("Entrar un número"));
}while (numero <=0 && numero >=100);

do{
     divisor++
     resto = numero%divisor;
}while (resto != 0 && divisor < numero);

if (resto ==0 && divisor != numero)
     alert(numero+" No es primo");
else
     alert(numero+ "Es primo");

En este script vas a crear un menu con tres opciones: escribir, leer, ssalir. El usuario elegirá una opción y en un alert se le indicará la opción elegida. El programa vuelve a mostrar el menu y se repite el proceso. El script acabará cuando se pulse la opción de salir.
El menu tiene 3 opciones, elijo la opción 2, respuesta "has elegido leer".

let opcion = '';

do{

opcion = prompt("1.- Escribir\n 2.- Leer\n 3.- Salir\n Escoge una opción:");

switch(opcion){

   case '1':printf("Opción 1");

      alert("Eliges Escribir")

      break;

   case '2':

      alert("Eliges Leer")

      break;

    case '3':

       alert("fin del programa");

       break;

   default:

       alert("debes elegir una de las opciones")

   }

}

while(opcion != '3');

 

En este script se le pide al usuario que teclee dos números, el script mostrará la suma y pedirá al usuario si queire repetir. Si teclea S repite y si teclea N el programa sale. No acepta otras teclas
Por ejemplo si tecleo 3 despues 9 me dirá que la suma es 12, y luego me preguntará si quiero repetir.

let numero1, numero2, repite;

do{

    numero1 = parseInt(prompt("Primer numero "));

    numero2 = parseInt(prompt("Segundo numero "));

    alert("La suma es "+(numero1 + numero2));

    do{

        repite = prompt("¿Quiere repetir?");

    while(repite != 'S' && repite != 'N');

}

while (repite == 'S');

 

Usar un bucle do..while para crear una cadena que contenga letras repetidas. Las letras se entran por teclado y solo podrán ser la X o la Z despues de elegir las letras se le ingresa el número de repeticiones que deberá estar entre 1 y 15.

Si elijo X y luego telco 10 se mostrará XXXXXXXXXX. Si tecleo z me olverá a pedir letra, y sitecelo 20 me volverá a pedir el número

let letra='', veces=0, cadena='';

do{

    letra = prompt("¿Qué letra desea X o la Z?");

}while (letra != 'X' && letra != "Z");

do{

   veces = parseInt(prompt("¿Cuantas repeticiones (1-15)?"));

}while (veces <1 || veces > 15)

do{

    cadena+=letra;

    veces--;

}while (veces>0);

alert(cadena);

En este sript se trata de calcular el máximo común divisor de dos números. El algorimto es simple: dividimos el primoer por el segundo. si el resto es cero este segundo es el mcm. Si no se desecha el primero y se repite el proceso con el segundo y el resto. Así mientras el resto no sea 0
Si tecleo 20 y luego 10, el mcd es 10. Si tecleo 4 y luego 20 el mcd será 4. Si tecleo 20 y 8 el mcd es 4.

let dividendo, divisor;
let resto, mcd=0;
dividendo = parseInt(prompt("Primer numero "));
divisor = parseInt(prompt("Segundo numero "));
do
{
     resto = dividendo % divisor;
     if(resto == 0)
     {
     mcd = divisor;
     }
     else
     {
     dividendo = divisor;
     divisor = resto;
     }
}while(resto != 0);

Este ejemplo debe pedir al usuario un  número entero y, mediante sucesivas divisiones por 10 debe escribir los digitos que lo forman de menor a mayor orden (de unidades hacia arriba) en una cadena separados por un espacio
Si escribo 126 deberá responder  "Dígitos del número: 6 2 1"

var numero, salida='', digito;

numero = parseInt(prompt("teclear un número"));

do{

   digito = numero%10;

   numero = parseInt(numero/10);

   salida += digito+'  ';

}while (numero >0)

alert("Dígitos del número "+salida);

Diseñar un script que pida un número mayor que cero y devuelva la suma de todos los números pares desde cero al número introducido. Mostrará la suma y volverá a pedir otro núero hasta que el usuario teclee un 0.
Si tecleo el 10 mostrará 30 la suma de 2+4+6+8+10

let numero, suma;

do{

    suma = 0;

    numero = parseInt(prompt("Teclear un número"));

    contar = numero;

    do{

        suma += (numero%2==0)? numero:0;

        numero--;

        }while (numero >0);

}while (contar > 0)

Escribir un script usando el bucle do while para pedir que el usuario escriba dos números. Si el primero es mayor que el segundo el programa volverá a pedir que se escriban los números. Si el primero es menor o igual que el segundo el programa acaba y dice "Numeros en orden creciente"
Si tecleo pimero un 12 y luego un 9, volverá a pedirme que escriba los datos. Si escribo un 12 y luego un 20 me dirá "Numeros ordenados"

let numero1, numero2;

do{

    numero1 = parseInt(prompt("Numero 1º"));

    numero2 = parseInt(prompt("Numero 2º"));

}

while(numero1 >numero2);

alert("Numeros ordenados);

Escribir un script para determinar si el numero introducido por el usuario es un palíndromo, es decir, un número que se lee igual del derecho que del revés.

Para invertir el número podéis hacer sucesivas divisiones entre 10: el resto lo añadis al inveso multiplicado por 10. Y repetis con el valor entero del numero dividido por 10.

Si escribo el número 12421 me dirá que "12421 es un palíndromo".

let numero, inverso=0, copia, resto;

numero = parseInt(prompt("teclear el numero"));

copia = numero;

do {

   resto = copia%10;

   inverso = inverso*10 + resto;

   copia = parseInt(copia/10);

} while(copia != 0);

if (inverso == numero)

    alert(numero+" es palindromo ");

else

    alert(numero+" no es palindromo ");