8

#PlatziCodingChallenge #32 - Ecuaciones cuadráticas

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.

Escribe tu comentario
+ 2
Ordenar por:
5
19943Puntos

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
3

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

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}')```
1
6327Puntos

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

1
13595Puntos

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),
  };
}
1
7689Puntos

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>
1
7689Puntos
7 meses

Pd: Me olvide cambiar el título

1
26494Puntos

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}')
0
17607Puntos

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>