Rozwiązanie trójmianu kwadratowego za pomoca funkcji strzałkowej.

0

Mam z tym cholerny problem, w jaki sposób powinienem to dalej pociągnąć?

const myDelta = (a, b, c) => Math.pow(b, 2) - 4*a*c;
if (myDelta(1, 3, 1) > 0) {
    // Na początku jest liczoa delta. Teraz mam pierwszy warunek
    // w którym podaję a, b oraz c. Jeśli delta będzie > 0, to
    // powinienem zacząć liczyć x1 i x2, ale tutaj są schody, bo
    // nie podkłada mi za literę danej cyfry, tzn. nie napiszę:
    console.log(2*a); // bo program nie wie co to jest a, a przecież
    // wyżej w if podałem, że a = 1, b =3, c = 1. Jak to mogę obejść?
}
1
const myDelta = (a, b, c) => Math.pow(b, 2) - 4*a*c;
if (myDelta(a = 1, b = 3, c = 1) > 0) {

    console.log(`a = ${a}, b = ${b}, c = ${c}`);
}
2

Po prostu przypisz współczynniki do zmiennych zanim przekażesz je do funkcji myDelta, albo jeszcze lepiej - zrób całość jako funkcję, która wywołuje funkcję delta, np:

const delta = (a, b, c) => b ** 2 - 4 * a * c

const quadraticEquation = (a, b, c) => {
  const d = delta(a, b, c)

  if (d < 0) {
    throw new Error("There is no real solution")
  }

  if (d === 0) {
    return { x0: -b / (2 * a) }
  }

  return {
    x1: (-b - Math.sqrt(d)) / (2 * a),
    x2: (-b + Math.sqrt(d)) / (2 * a),
  }
}

// Examples:

console.log(quadraticEquation(2, 4, 2)) // -> { x0: -1 }
console.log(quadraticEquation(2, 6, 3)) // -> { x1: -2.3660254037844384, x2: -0.6339745962155614 }
console.log(quadraticEquation(2, 3, 3)) // -> throws

PS
Sposób @senvaros zadziała, ale nie jest to najlepszy pomysł bo niepotrzebnie tworzy globalne zmienne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1