как выдать рандомно 4 значения (+ - * /) с помощью Функции

Рейтинг: 0Ответов: 2Опубликовано: 07.07.2023

например:

пользователь вводит количество решаемых примеров и Функции пользователю отдают рандомные числа и рандомные знаки для решаемых примеров

function rand(min, max) {
    return Math.floor(Math.random() * (max - min) + min)
}


let ex = +prompt ('сколько задач вы хотите решить ?')
let minNum = +prompt ('минимальное число')
let maxNum = +prompt ('максимальное число')


for (let i = 0; i < ex; i++) {
    let num1 = rand (minNum, maxNum)
    let num2 = rand (minNum, maxNum)
    let res = +prompt(num1 + ' + ' + num2 + ' = ? ')
    let answer = num1 + num2 == res ? ' ты молодец' : ' ты тупой иди учись'
    alert (num1 + ' + ' + num2 + ' = ' + (num1 + num2) + ' ваш ответ ' + res + answer)
}

по типу такого, но с добавлением рандомных знаков (+ - * /)!!!!!!!!!!!!!!!!!!

Ответы

▲ 0

Вы можете использовать функцию eval:

function rand(min, max) {
    return Math.floor(Math.random() * (max - min) + min)
}

let op_list = ['+', '-', '*' , '/'];

let ex = +prompt ('сколько задач вы хотите решить ?')
let minNum = +prompt ('минимальное число')
let maxNum = +prompt ('максимальное число')


for (let i = 0; i < ex; i++) {
    let num1 = rand (minNum, maxNum)
    let op = op_list[rand(0, op_list.length - 1)]
    let num2 = rand (minNum, maxNum)
    let res = +prompt(num1 + ' ' + op + ' ' + num2 + ' = ? ')
    let evaluated = eval(num1 + ' ' + op + ' ' + num2)
    let answer = evaluated == res ? ' ты молодец' : ' ты тупой иди учись'
    alert (num1 + ' ' + op + ' ' + num2 + ' = ' + evaluated + ' ваш ответ ' + res + answer)
}
▲ 0

ops[rand(0, ops.length)] - выдаёт случайный элемент массива ops.

Изображение операции и её вычисление хранятся парами: ['+', (a, b) => a + b].

const rand = (min, max) => min + Math.floor(Math.random() * (max - min));

const ops = [
    ['+', (a, b) => a + b],
    ['-', (a, b) => a - b],
    ['*', (a, b) => a * b],
    ['/', (a, b) => a / b]
];

const ex = +prompt('сколько задач вы хотите решить ?')
const minNum = +prompt('минимальное число')
const maxNum = +prompt('максимальное число')

for (let i = 0; i < ex; ++i) {
    const a = rand(minNum, maxNum + 1);
    const [name, op] = ops[rand(0, ops.length)];
    const b = rand(minNum, maxNum + 1);
    const expr = a + ' ' + name + ' ' + b;
    const guess = +prompt(expr + ' = ?');
    const actual = op(a, b);
    const result = guess === actual ? ' ты молодец' : ' ты тупой иди учись';
    alert(expr + ' = ' + actual + ' ваш ответ ' + guess + result);
}