Как суммировать числа от 1 до ввода пользователя, используя while-l oop, do-l oop? - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь выполнить следующий код, чтобы получить сумму чисел от 1 до 100 (ввод пользователя должен быть от 1 до 100), используя whilel oop или dol oop. Я новичок в этом, поэтому приветствую любую помощь!

В следующем коде я использовал метод подсказки для получения записи пользователя. Написал код, чтобы суммировать числа; от 1 до записи пользователя. Я отобразил результат в окне предупреждения. Теперь моя задача в том, что я хочу отображать сообщение об ошибке, если запись пользователя выходит за пределы диапазона 1–100. И после этого я не хочу делать никаких вычислений, если пользователь нажимает кнопку «Отмена» и прекращает отображение окна подсказки.

<!DOCTYPE html>
        <html>
        <head>
        <title>Sum of Numbers</title>
     <script>
      var numbers = prompt("Enter a  number 1-100");
    
      while (numbers!=null && (isNaN(parseInt(numbers)) || parseInt(numbers) >100 || parseInt(numbers) <1)) {
          numbers = prompt("Try again.Enter a  number 1-100");
      }
      if (numbers !=null){
            alert("Finally you entered a correct number");
      }
     
      var sum = 0;
      var numOfLoops = numbers;
      var counter = 1;
      do {
        sum+=counter;
        counter++;
      } while (counter<=numOfLoops)
      alert ("sum=" +sum);
    
     </script>
    
    </head>
    <body>
        <script>
        document.write("<h1>Sum of Numbers</h1>");
            document.write("The sum of numbers from 1 to = " + numbers +  "&nbsp;is = "  +
                + sum + "<br><br>");
        </script>
    
    </body>
    </html>

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Просто переместите лог вычислений c внутрь условия, когда пользователь вводит правильный ввод. Это обеспечит автоматическое закрытие приглашения при нажатии кнопки отмены (приглашение возвращает null , когда пользователь нажимает кнопку отмены)

    <script>
        var numbers = prompt("Enter a  number 1-100");

        while (numbers != null && (isNaN(parseInt(numbers)) || parseInt(numbers) > 100 || parseInt(numbers) < 1)) {
            numbers = prompt("Try again.Enter a  number 1-100");
        }
        if (numbers != null) {
            alert("Finally you entered a correct number");

            var sum = 0;
            var numOfLoops = numbers;
            var counter = 1;
            do {
                sum += counter;
                counter++;
            } while (counter <= numOfLoops)
            alert("sum=" + sum);
        }

    </script>
0 голосов
/ 12 июля 2020

Вы можете просто использовать do…while для решения вашей проблемы, например, :

let n = null;
do {
  n = parseInt(prompt('Enter an int number between 1 and 100'));
} while (isNaN(n) || (n < 1 || n > 100));
let sum = n * (n + 1) / 2;
alert('The sum of all int numbers from 1 to ' + n + ' is: ' + sum);

NB Сумма первых n целых чисел может быть вычислена как n * ( n + 1) / 2, со сложностью O (1) - уменьшение O ( n ) сложности вашего for l oop.

...