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

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

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

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

4 Симпатий

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

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

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

calculateRoots()

Мое решение:

let calculateRoots = function (a,b,c) {

let discr = (b * b) - (4 * a * c);
let firstRoot;
let secondRoot;

if (discr < 0) { return "Корней нет"};
if (discr == 0) {
  
   firstRoot = -b / (2 * a);
    
   return "Корень равен " + firstRoot;
}

if (discr > 0) {
  
    firstRoot = (-b + Math.sqrt(discr)) / (2 * a);
    secondRoot = (-b - Math.sqrt(discr)) / (2 * a);
    
    return 'Первый корень равен ' + firstRoot + ', второй корень равен ' + secondRoot;      
}

}

Моё решение:

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

Моё решение:

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

  if (d < 0) {
    return 'Корней нет' ;
  }

  const divisor = (2 * a)
  if (d === 0) {
    return `Корень равен ${-b / divisor}`;
  }
  
  const x1 = (-b + d ** 0.5) / divisor;
  const x2 = (-b - d ** 0.5) / divisor;

  return `Первый корень равен ${x1}, второй корень равен ${x2}`;
}