Квадратные корни

мой вариант, испытание прошел, но пришлось изучить что такое вообще Дискриминант, в школе пропустил эту тему ))

var calculateRoots = function (a, b, c) {
  var x1 = 0;
  var x2 = 0;
  var str;
  var D = b * b - 4 * a * c;
  if (D < 0) {
    str = 'Корней нет';
  }
  if (D === 0) {
    x1 = -b / (2 * a);
    str = 'Корень равен ' + x1;
  }
  if (D > 0) {
    x1 = (-b + Math.sqrt(D)) / (2 * a);
    x2 = (-b - Math.sqrt(D)) / (2 * a);
    str = 'Первый корень равен ' + x1 + ', второй корень равен ' + x2;
  }
  return str;
}

Получилось как и у Романа, только переменных меньше новых вводил.

Код

let calculateRoots = function(a, b , c) {
let discriminant = b * b - 4 * a * c;
let result;
if (discriminant < 0) {
result = ‘Корней нет’;
}
if (discriminant === 0) {
result = 'Корень равен ’ + ( -b / (2 * a));
}
if (discriminant > 0) {
result = 'Первый корень равен ’ + (-b + Math.sqrt(discriminant)) / (2 * a) + ', второй корень равен ’ + (-b - Math.sqrt(discriminant)) / (2 * a);
}
return result;
}

1 Симпатия
const calculateRoots = (a, b, c) => {
  var D = b * b - 4 * a * c;
  if (D < 0) {
    return 'Корней нет';
  } else if (D == 0) {
    return 'Корень равен ' + (-b  / (2 * a));
  } else if (D > 0) {
    return 'Первый корень равен ' + ((-b + Math.sqrt(D)) / (2 * a)) + ', второй корень равен ' + ((-b - Math.sqrt(D)) / (2 * a))
  }
}
1 Симпатия

Первый вариант решения:

var calculateRoots = function (a, b, c) {
  var D = Math.sqrt(b * b - 4 * a * c);
  if (D !== D) {
    return "Корней нет";
  } if (D == 0) {
    return 'Корень равен ' + -b / (2 * a);
  } else {
    return 'Первый корень равен ' + (-b + D) / (2 * a) + 
    ', второй корень равен ' + (-b - D) / (2 * a);
  }
}

Второй вариант решения:

var calculateRoots = function (a, b, c) {
  var D = Math.sqrt(b * b - 4 * a * c),
      answer = (D !== D) ? "Корней нет" : 
                D == 0   ? 'Корень равен ' + -b / (2 * a) :
                'Первый корень равен ' + (-b + D) / (2 * a) + 
                ', второй корень равен ' + (-b - D) / (2 * a);
                return answer;
}
1 Симпатия

Подскажите, почему эта задача относится к вызовам продвинутого уровня? Она же решается просто по описанию.

2 Симпатий

let q = b * b - 4 * a * c;
let txt =[‘Корней нет’,'Корень равен ', 'Первый корень равен ‘,’, второй корень равен '];

let solution = (x,y) => {
let [f1,f2,f3] = [-y/(2x), (-y+Math.sqrt(q))/(2x), (-y-Math.sqrt(q))/(2*x)];
if(q<0) return txt[0]
else
return (q==0)?txt[1]+f1:txt[2]+f2+txt[3]+f3;
}
return solution(a,b)
};

У тебя с let решение прошло ? А то я пару раз пробовал, не обнаруживало переменную при проверке, пришлось перейти на var…

const calculateRoots = (a, b, c) => {
let vD = Math.sqrt(bb-4ac)
let result = ‘Корней нет’;
let [r1, r2a, r2b] = [-b/(2
a), (-b+vD)/(2a), (-b-vD)/(2a)];

 if (vD==0) result = 'Корень равен ' + r1;
 if (vD>0)  result = 'Первый корень равен ' + r2a + ', второй корень равен ' + r2b;
  return  result;

}

var calculateRoots = function (a, b, c) {
var result =0;
var discr = (b * b) - (4 * a * c);
var firstCoren = 0;
var secondCoren = 0;

if (discr < 0) {
result = ‘Корней нет’;
} else if (discr === 0) {
firstCoren = (-b / (2 * a));
result = ('Корень равен ’ + firstCoren);
} else if (discr > 0) {
var firstCoren = ((-b + Math.sqrt(discr)) / (2 * a));
var secondCoren = ((-b - Math.sqrt(discr)) / (2 * a));
result = ('Первый корень равен ’ + firstCoren + ', второй корень равен ’ + secondCoren);

}
return result;
}

Каким образом вы все прячите свой код в комментариях ?) Не могу понять…

Просто выделяешь в ответе то, что нужно скрыть, нажимаешь в поле ответа на шестерёнку --> скрыть детали.

Сводка

var calculateRoots = function(a, b, c) {
discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
return ‘Корней нет’}
if (discriminant === 0) {
var roots = -b / (2 * a);
return 'Корень равен ’ + roots;}
if (discriminant > 0) {
var root1 = (-b + Math.sqrt(discriminant)) / (2 * a);
var root2 = (-b - Math.sqrt(discriminant)) / (2 * a)
return 'Первый корень равен ’ + root1 + ', второй корень равен ’ + root2;
}}

Мой код
let calculateRoots = function (a, b, c) {
let  message = '';
let D = b * b - (4 * a * c);

  if (D < 0) {
    message = 'Корней нет';
  };
  if (D === 0) {
    D = -b / (2 * a);
    message = 'Корень равен ' + D;
  };
  if (D > 0) {
    let D1 =  (-b + Math.sqrt(D)) / (2 * a);
    let D2 =  (-b - Math.sqrt(D)) / (2 * a);
    message = 'Первый корень равен ' + D1 + ', второй корень равен ' + D2;
  }
  return message;
};

Нажимаете значек шестеренки (он последний в панели), и там будет меню “скрыть детали”.