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

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

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;
}

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))
  }
}

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

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 Симпатия

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

1 Симпатия

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;

}