Seguro te acuerdas que en la escuela te enseñaron a resolver ecuaciones de segundo grado mediante la fórmula general para la obtención de raíces. Una ecuación de segundo grado tiene la forma: (A * X^2) + (B * X) + C = 0. Lee este artículo de Wikipedia https://es.wikipedia.org/wiki/Ecuación_de_segundo_grado y crea una calculadora que pueda resolver cualquier ecuación cuadrática.
Ecuaciones cuadráticas en JavaScript y en Python (en Python se pueden mostrar resultados imaginarios):
// Ecuaciones Cuadráticas en JavaScriptfunctioncuadraticEquationSolutions(A, B, C) { let solution = { x1: 0, x2: 0 } if (A === 0) { if (B === 0) { return C === 0 ? 'Hay infinitas soluciones' : 'No hay soluciones' } else { return { x: -C / B } } } else { let dSquare = B ** 2 - 4 * A * C if (dSquare < 0) { return'Las soluciones son imaginarias' } else { let d = Math.sqrt(dSquare) return { x1: (-B + d) / (2 * A), x2: (-B - d) / (2 * A) } } } } // x^2 - 9x + 20 = 0console.log(cuadraticEquationSolutions(1, -9, 20)) // {x1: 5, x2: 4}// x^2 - 4x + 5 = 0console.log(cuadraticEquationSolutions(1, -4, 5)) // Las soluciones son imaginarias// 5x - 15 = 0console.log(cuadraticEquationSolutions(0, 5, -10)) // {x: 2}// 8 = 0console.log(cuadraticEquationSolutions(0, 0, 8)) // No hay soluciones// 0 = 0console.log(cuadraticEquationSolutions(0, 0, 0)) // Hay infinitas soluciones
# Ecuaciones Cuadráticas en PythondefcuadraticEquationSolutions(A, B, C):if A == 0: if B == 0: if C == 0: return'Hay infinitas soluciones'else: return'No hay soluciones'else: return'x = {}'.format(-C/B) else: d = (B**2 - 4*A*C)**.5return'x1 = {}, x2 = {}'.format((-B + d) / (2 * A), (-B - d) / (2 * A)) # x^2 - 9x + 20 = 0 print(cuadraticEquationSolutions(1, -9, 20)) # x1 = 5.0, x2 = 4.0# x^2 - 4x + 5 = 0 print(cuadraticEquationSolutions(1, -4, 5)) # x1 = (2+1j), x2 = (2-1j)# 5x - 15 = 0 print(cuadraticEquationSolutions(0, 5, -10)) # x = 2.0# 8 = 0 print(cuadraticEquationSolutions(0, 0, 8)) # No hay soluciones# 0 = 0 print(cuadraticEquationSolutions(0, 0, 0)) # Hay infinitas soluciones
En Python:
""" Programa para resolver ecuaciones cuadráticas. Program to solve quadratic equations. """defask_numeric_entry(letter):try: whileTrue: b = float(input(' Please enter value of {}: ' .format(letter))) return b except: whileTrue: try: b = float(input(' Invalid entry. Please enter a valid number of {}: ' .format(letter))) return b except: passdefask_numeric_entry_dif_0():try: whileTrue: a = float(input(' Please enter value of A: ')) if a != 0: return a else: a = int('a') except: whileTrue: try: a = float(input(' Invalid entry. Please enter a valid number different of 0: ')) if a != 0: return a except: passdefquadratic_formula(disc, a, b): x1 = (-b + disc**0.5)/(2*a) x2 = (-b - disc**0.5)/(2*a) return x1, x2 defquadratic_solution(a, b, c): disc = b**2 - 4*a*c if disc > 0: x1, x2 = quadratic_formula(disc, a, b) print(' There are two distinct roots: {} and {}' .format(x1, x2)) elif disc == 0: x1, x2 = quadratic_formula(disc, a, b) print(' There is exactly one real root: {}' .format(x1)) else: x1, x2 = quadratic_formula(disc, a, b) print(' There are two distinct imaginary roots: {} and {}' .format(x1, x2)) if __name__ == "__main__": print('QUADRATIC EQUATIONS!!!') print('The general form of a quadratic equation is: \nAx^2 + Bx + C = 0 with A ≠ 0') print('Please enter values of A, B and C to solve your equation:') a = ask_numeric_entry_dif_0() b = ask_numeric_entry('B') c = ask_numeric_entry('C') print('Solution for your equation {}x^2 + {}x + {}:' .format(a, b, c)) quadratic_solution(a, b, c)
En python 😃
mensaje=''' Calculadora de ecuaciones cuadraticas Ingrese los coeficientes de a,b y c ax**2+bx+c=0''' a=float(input('Ingrese el coeficiente a para x**2: ')) b=float(input('Ingrese el coeficiente b para x: ')) c=float(input('Ingrese el coeficiente c para x**0: ')) print(f'Tu ecuacion cuadratica es {a}x**2 {b}x {c}=0') #raiz 1 x1=(-b+(b**2-4*a*c)**0.5)/(2*a) x1=round(x1,2) print(f'La raiz x1 es igual {x1}') #raiz 2 x2=(-b-(b**2-4*a*c)**0.5)/(2*a) x2=round(x2,2) print(f'La raiz x2 es igual {x2}')```
Ecuaciones cuadráticas en Java ☕️ ☕️ 😃
public class EcuacionesCuadraticas { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.println("Programa que resuelve ecuaciones cuadráticas del tipo: 'ax² + bx + c = 0'");System.out.println("Ingrese los valores de 'a' 'b y 'c' ");int a = scanner.nextInt();int b = scanner.nextInt();int c = scanner.nextInt();int newB = (b < 0) ? b * -1 : b * -1; //le cambia el signo a Bdouble x1;double x2;double determinante;//System.out.println(newB); determinante = Math.pow(b, 2) + (-4 * a) * c;//System.out.println(determinante);if (determinante > 0) { // tiene dos soluciones x1 = newB - Math.sqrt(determinante);double resultadoX1 = x1 / (2 * a); x2 = newB + Math.sqrt(determinante);double resultadoX2 = x2 / (2 * a);System.out.println("La ecuación tiene dos soluciones :)");System.out.println("X1 = " + resultadoX1);System.out.println("X2 = " + resultadoX2); } elseif (determinante == 0) { //tiene una soluciónSystem.out.println("La ecuación tiene una solución :)"); x1 = newB - Math.sqrt(determinante);double resultadoX1 = x1 / (2 * a);System.out.println("X = " + resultadoX1); } else { //determinante < 0 no tiene solución realSystem.out.println("La ecuación no tiene soluciones reales :("); } } }
Ejecución del programa

Solucion en JS con los dos posibles resultados:
functionsolveEcuation(A, B, C) { let innerNumber = B ** 2 - 4 * A * C; if (innerNumber < 0) { return"Imaginary number"; } return { solutionA: (B * -1 + Math.sqrt(innerNumber)) / (2 * A), solutionB: (B * -1 - Math.sqrt(innerNumber)) / (2 * A), }; }
Mi repo con la solución en JS y C.
https://github.com/ceporro/PlatziCodingChallenge/tree/master/Day 32
No abre el link pero supongo que lo que había que hacer es utilizar la formula general para resolver la ecuación de segundo grado. Respuesta:
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Teorema de Pitágoras</title></head><style> * { margin: 0; } .contenedor { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } .section { padding: 0.25rem2rem; display: flex; align-items: center; } .sectioninput{ margin-left: 12px; width: 50px; margin-right: 10px; text-align: center; } .inputs { display: flex; flex-flow: column; align-items: center; padding: 2rem; } .deadSpace { margin: 40px10px; } .btn { border: 2px solid black; border-radius: 6px; cursor: pointer; } #contra { padding: 020px; width: 95%; } </style><body><divclass="contenedor"><h1style="margin-bottom: 24px;">Calculadora de Ecuaciones Cuadráticas</h1><h3style="margin-bottom: 24px;">Ingresa los siguientes datos</h3><divclass="inputs"><sectionclass="section"><inputid="a"placeholder="A"/>X^2 + <inputid="b"placeholder="B"/> X + <inputid="c"placeholder="C"/></section><sectionclass="section"> X1 = <spanstyle="margin-left: 10px;"id='x1'>0</span><spanclass='deadSpace'></span> X2 = <spanstyle="margin-left: 10px;"id='x2'>0</span></section></div><buttonaccesskey="enter"onclick="calcula()"class="btn"id='boton'>Calcular...</button></div><script>// -b +- sqrt(b^2 - 4ac) / 2awindow.addEventListener('keydown', (e) => { if (e.keyCode === 13) calcula() }) functioncalcula() { const a = parseFloat(document.getElementById('a').value) || 0const b = parseFloat(document.getElementById('b').value) || 0const c = parseFloat(document.getElementById('c').value) || 0let x1 let x2 const x1Node = document.getElementById('x1') const x2Node = document.getElementById('x2') functionraiz() { return (b)**2 - (4*(a)*(c)) } functiontieneDecimal(num) { return num - Math.floor(num) === 0 } functiontieneDecimalRaiz(num) { returnMath.sqrt(raiz()*-1) - Math.floor(Math.sqrt(raiz()*-1)) === 0 } if (a === 0 && b === 0 && c === 0){ return alert('Math Error :c') } if (a === 0 && b === 0){ return alert('No tiene soluciones') } if (a === 0) { x1 = (-1*c)/b return alert(`No es una ecuación cuadrática, su grado es 1 por ende x = ${x1}`) } if (raiz() < 0) { alert('ALERTA! El resultado de la raiz cuadrada es negativa, por ende el resultado es un número imaginario...') if (tieneDecimalRaiz()) { x1Node.innerHTML = `(${-1*b}+${Math.sqrt(raiz()*-1)}i)/${2*a}` x2Node.innerHTML = `(${-1*b}-${Math.sqrt(raiz()*-1)}i)/${2*a}` } else { x1Node.innerHTML = `(${-1*b}+√${raiz()*-1}i)/${2*a}` x2Node.innerHTML = `(${-1*b}-√${raiz()*-1}i)/${2*a}` } } else { x1 = (-(b) + Math.sqrt(raiz()))/(2*(a)) x2 = (-(b) - Math.sqrt(raiz()))/(2*(a)) if (tieneDecimal(x1)) { x1Node.innerHTML = x1 } else { x1Node.innerHTML = x1.toFixed(2) } if (tieneDecimal(x2)) { x2Node.innerHTML = x2 } else { x2Node.innerHTML = x2.toFixed(2) } } } </script></body></html>
Pd: Me olvide cambiar el título
Este me divirtió mucho. 😄
import math defcalculate_x(a, b, c): discriminant = (b**2) - (4*a*c) minus_b = -b divisor = 2*a if discriminant > 0: x1 = (minus_b + math.sqrt(discriminant))/divisor x2 = (minus_b - math.sqrt(discriminant))/divisor elif discriminant == 0: x1 = (minus_b)/divisor x2 = x1 elif discriminant < 0: x1 = f'{minus_b / divisor} + {math.sqrt(abs(discriminant))/divisor}i' x2 = f'{minus_b / divisor} - {math.sqrt(abs(discriminant))/divisor}i'return (x1, x2) if __name__ == "__main__": print('C U A D R A T I C E Q U A T I O N\n') a = int(input('Insert a: ')) b = int(input('Insert b: ')) c = int(input('Insert c: ')) assert a != 0, 'a must not be 0' x1, x2 = calculate_x(a, b, c) print(f'x1 = {x1}, x2 = {x2}')
Reto 32: Ecuaciones cuadráticas
Repositorio del reto: PlatziCodingChallengeRepo
GitHub pages: PlatziCodingChallengePages
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Reto 32: Ecuaciones cuadráticas</title></head><style>body { display: flex; flex-direction: column; align-items: center; } </style><body><h1>Ecuaciones cuadráticas</h1><table><thead><tr><th>A</th><th></th><th>B</th><th></th><th>C</th><th></th></tr></thead><tbody><tr><td><inputtype="number"id="a"></td><td>X^2</td><td><inputtype="number"id="b"></td><td>X</td><td><inputtype="number"id="c"></td><td>=0</td></tr></tbody></table><buttontype="button"onclick="handleCalcular()">Calcular Ecuación</button><h2id="result"></h2><script>functioncalcularEcuacion(a, b, c) { let discriminante = Math.pow(b, 2) - 4 * a * c; let x1, x2, aux; let message = ""; aux = Number.parseFloat((b * (-1)) / (2 * a)); if (discriminante > 0) { x1 = Number.parseFloat(aux - (Math.sqrt(discriminante) / (2 * a))); x2 = Number.parseFloat(aux + (Math.sqrt(discriminante) / (2 * a))); message = `Tiene 2 raices reales distintas<br />x1 = ${x1}<br />x2 = ${x2}<br />Punto1(${x1}, 0)<br />Punto2(${x2}, 0)`; } elseif (discriminante === 0) { x1 = aux; message = `Tiene 1 raiz real pero de multiciplicidad doble<br />x = ${x1}<br />Punto(${x1}, 0)`; } else { let i = Number.parseFloat(Math.sqrt((discriminante) * (-1)) / (2 * a)); message = `Tiene 2 raices complejas conjugadas<br />x1 = ${aux} + i * (${i})<br />x2 = ${aux} - i * (${i})`; } return message; } functionhandleCalcular() { let result = document.getElementById("result"); let a = Number.parseInt(document.getElementById("a").value); let b = Number.parseInt(document.getElementById("b").value); let c = Number.parseInt(document.getElementById("c").value); if (a === 0) { alert("Disculpe a debe ser diferente de cero a<>0"); return; } let message = calcularEcuacion(a, b, c); result.innerHTML = message; } </script></body></html>