You've already forked Curso-lenguaje-C
Add ecuacion_segundo_grado exercise
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
Acción que, dados tres números reales que representan los coeficientes de una
|
||||
ecuación de segundo grado, retorne sus raíces, en caso de que existan.
|
||||
|
||||
En caso contrario, que inicialice las raíces a 0.
|
||||
|
||||
Recordad que dada la ecuación A * x2 + B * x + C las raíces se calculan:
|
||||
|
||||
```
|
||||
x1 = (-B + sqrt(B2 - 4 * A * C)) / (2 * A)
|
||||
```
|
||||
|
||||
Si la expresión dentro de la raíz es negativa quiere decir
|
||||
que la ecuación no tiene raíces.
|
||||
|
||||
Podéis suponer que la función raíz cuadrada está ya definida y su cabecera es:
|
||||
|
||||
```
|
||||
function squareRoot(x: real): real;
|
||||
```
|
||||
Declarad las variables necesarias para llamar a la acción anterior
|
||||
e indicad cómo se llamaría.
|
||||
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Función para calcular la raíz cuadrada utilizando el método de Newton
|
||||
float squareRoot(float x) {
|
||||
float estimacion = x / 2.0; // Estimación inicial
|
||||
float epsilon = 0.0001; // Precisión deseada
|
||||
|
||||
while ((estimacion * estimacion - x) > epsilon || (x - estimacion * estimacion) > epsilon) {
|
||||
estimacion = (estimacion + x / estimacion) / 2.0;
|
||||
}
|
||||
|
||||
return estimacion;
|
||||
}
|
||||
|
||||
// Función para calcular las raíces de una ecuación de segundo grado
|
||||
void calcularRaices(float A, float B, float C, float *raiz1, float *raiz2) {
|
||||
float discriminante = B * B - 4 * A * C;
|
||||
|
||||
if (discriminante >= 0) {
|
||||
float raiz_discriminante = squareRoot(discriminante);
|
||||
*raiz1 = (-B + raiz_discriminante) / (2 * A);
|
||||
*raiz2 = (-B - raiz_discriminante) / (2 * A);
|
||||
} else {
|
||||
*raiz1 = 0;
|
||||
*raiz2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
float coeficiente_A, coeficiente_B, coeficiente_C, raiz1, raiz2;
|
||||
|
||||
printf("Introduce los coeficientes de la ecuacion de segundo grado.\nA: ");
|
||||
scanf("%f", &coeficiente_A);
|
||||
|
||||
printf("B: ");
|
||||
scanf("%f", &coeficiente_B);
|
||||
|
||||
printf("C: ");
|
||||
scanf("%f", &coeficiente_C);
|
||||
|
||||
calcularRaices(coeficiente_A, coeficiente_B, coeficiente_C, &raiz1, &raiz2);
|
||||
|
||||
printf("\nLas raices son: %.2f y %.2f\n\n", raiz1, raiz2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user