Javascript, function, mathrandom, array

Y F спросил: 28 марта 2018 в 01:37 в: javascript

Я должен выполнять математическое упражнение с вычитаниями для базового курса Javascript. Упражнение должно содержать 5 упражнений с 5 подсказками (например, "10-7 =", "5-1 =" и т. Д.). Первое число должно быть больше второго.

Поэтому мне нужно создать функцию, которая генерирует два случайных числа, а затем возвращает их в массиве. Прежде чем он вернется, он должен убедиться, что число в позиции 0 больше, чем число в позиции 1, случайные числа должны быть между 1-10. Если человек правильно ответит на вопрос, появится окно предупреждения и скажет "Правильно!". и то же самое, если это неправильно.

Мой код до сих пор это, и я знаю, что это не совсем правильно. Что не так? Как я могу сделать это правильно?

function number ()
{
    var array = [a, b];
    var numbers = Math.floor(Math.random()*10)+1;

    array[0] = a ;
    array[1] = b ;
    if (a <= b)
    a = a+b;
    b = a-b;
    a = a-b;

    return a + b;
}

var mathQuestion = a + " - " + b +" = ";
var answer = a - b;

for(var i =0; i<6; i++) {
    var yourAnswer = parseInt(prompt(mathQuestion));

    if (yourAnswer === answer) {
        alert("Right!");
    }
    else {
        alert("Wrong!");
    }
}

2 ответа

Есть решение
ответил: 28 марта 2018 в 01:50

Я не совсем уверен, чего вы пытаетесь достичь, но я решил взглянуть на ваш код, чтобы улучшить его.

Этот код работает нормально, поэтому, пожалуйста, посмотрите

function getTask() {
  var array = [];
  var numberA = getRandomNumber()
  var numberB = getRandomNumber()

  if (numberA > numberB) {
    array[0] = numberA;
    array[1] = numberB;
  } else {
    array[0] = numberB;
    array[1] = numberA;
  }
  return array;
}

function getRandomNumber() {
  return Math.floor(Math.random() * 10) + 1;
}


let questionCount = 1;

for (var i = 0; i < questionCount; i++) {
  let numbers = getTask()
  var mathQuestion = numbers[0] + " - " + numbers[1] + " = ";
  var answear = numbers[0] - numbers[1];

  var yourAnswear = parseInt(prompt(mathQuestion));
  if (yourAnswear === answear)
    alert("Right!");
  else
    alert("Wrong!");
}

:): проблема заключалась в том, что вы упускали объявление Note. Поместите ключевое слово a and b перед значениями.

Vitaliy Andrianov ответил: 28 марта 2018 в 02:38

Вы можете удивить своего учителя троичными операторами, объединить и отсортировать методы массива и функции стрелок

Codepen demo

const getRandom = () => Math.floor(Math.random() * 10) + 1
const ask = () => {
    const numbers = [getRandom(), getRandom()].sort((a, b) => b - a)
    alert(
        prompt(numbers.join(' - ') + ' = ') == numbers[0] - numbers[1] ?
            'Right!' : 'Wrong!'
    )
}for (var i = 0; i < 6; i++) {
    ask();
}