Closed VeronikaKit closed 2 weeks ago
А вот здесь, Вероника, Вы неправы, причём неправы дважды. Во-первых, Вы немножечко недорезали. Задания 9 и 11 - это отдельный шаблон. Присмотритесь внимательнее: у 8 и 10 старший коэффициент всегда 1, а у 9 и 11 средний коэффициент равен сумме крайних (со знаком "плюс" или "минус"). Так что это два разных шаблона. Во-вторых, квадратное уравнение лучше генерить не так. Лучше сначала сгенерить хорошие корни, с которыми всё точно будет правильно, а потом уже по ним вычислить коэффициенты уравнения. По Виету, если угодно.
(function() { retryWhileError(function() {
let d=sluchch(1,30).pm();
let e=sluchch(1,30).pm();
let b=-(d+e);
let c=d*e;
genAssertZ1000((b**2-4*c>=0),'По условию');
genAssertZ1000(d,'Корень не должен быть слишком дробным');
genAssertZ1000(e, 'Корень не должен быть слишком дробным');
NAtask.setEquationTask({
parts: ['x^2+'+b+'x+'+c, 0],
roots: [d,e],
handleMultipleRoots: 'randomExceptList',
});
}, 20);})();
См. #1583 Кроме того, а нужно ли тут вообще проверять дискриминант? Мы же вроде корни-то сгенерировали, значит, они есть и вещественны.
(function() { retryWhileError(function() {
let d=sluchch(1,30).pm();
let e=slKrome(d,1,30).pm();
let b=-(d+e);
let c=d*e;
genAssertZ1000(d,'Корень не должен быть слишком дробным');
genAssertZ1000(e,'Корень не должен быть слишком дробным');
NAtask.setEquationTask({
parts: ['x^2+'+b+'x+'+c, 0],
roots: [d,e],
handleMultipleRoots: 'randomExceptList',
});
}, 20);})();
@SugarHedgehog , прошу ревью.
Воткнуть проверку
Да, таких ситуаций нужно избегать. Хинт: использовать slKrome
(function() { retryWhileError(function() {
let d=sluchch(1,30).pm();
let e=slKrome(d,1,30).pm();
let b=-(d+e);
let c=d*e;
genAssert(b!=0, 'Нужно два решения');
genAssert(c!=0, 'Нужно два решения');
genAssertZ1000(d,'Корень не должен быть слишком дробным');
genAssertZ1000(e,'Корень не должен быть слишком дробным');
NAtask.setEquationTask({
parts: ['x^2+'+b+'x+'+c, 0],
roots: [d,e],
handleMultipleRoots: 'randomExceptList',
});
}, 20);})();
Прекрасно работает