Introducción
En este laboratorio (lab), aprenderás cómo resolver ecuaciones cuadráticas en el lenguaje de programación C. El laboratorio cubre el proceso completo, desde la lectura de los coeficientes de la ecuación cuadrática, el cálculo del discriminante y la determinación de las raíces reales o complejas. Escribirás un programa en C que solicite al usuario los coeficientes, realice los cálculos necesarios e imprima las soluciones.
El laboratorio se divide en dos pasos principales. Primero, aprenderás cómo leer los coeficientes a, b y c del usuario. Luego, modificarás el programa para calcular el discriminante y utilizar la fórmula cuadrática para encontrar las raíces de la ecuación, manejando tanto las soluciones reales como las complejas.
Leer a, b, c
En este paso, aprenderás cómo leer los valores de entrada para una ecuación cuadrática en C. Crearemos un programa que acepte los coeficientes a, b y c del usuario.
Primero, crea un nuevo archivo para tu solucionador de ecuaciones cuadráticas:
cd ~/project
nano quadratic_solver.c
Ahora, agrega el siguiente código al archivo:
#include <stdio.h>
int main() {
double a, b, c;
// Prompt user for input
printf("Enter coefficient a: ");
scanf("%lf", &a);
printf("Enter coefficient b: ");
scanf("%lf", &b);
printf("Enter coefficient c: ");
scanf("%lf", &c);
// Print the entered coefficients
printf("Coefficients entered:\n");
printf("a = %.2f\n", a);
printf("b = %.2f\n", b);
printf("c = %.2f\n", c);
return 0;
}
Compila el programa:
gcc quadratic_solver.c -o quadratic_solver
Ejecuta el programa:
./quadratic_solver
Ejemplo de salida:
Enter coefficient a: 1
Enter coefficient b: -5
Enter coefficient c: 6
Coefficients entered:
a = 1.00
b = -5.00
c = 6.00
Analicemos las partes clave del código:
scanf()se utiliza para leer la entrada del usuario para cada coeficiente%lfes el especificador de formato para números de punto flotante de doble precisión- Almacenamos los coeficientes en las variables a, b y c
- El programa imprime de nuevo los coeficientes ingresados para confirmar la entrada
Calcular el discriminante y determinar las raíces
En este paso, modificarás el programa anterior para calcular el discriminante y determinar las raíces de la ecuación cuadrática utilizando la fórmula cuadrática.
Abre el archivo existente y actualiza el código:
cd ~/project
nano quadratic_solver.c
Reemplaza el código anterior con el siguiente:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant, root1, root2;
// Prompt user for input
printf("Enter coefficient a: ");
scanf("%lf", &a);
printf("Enter coefficient b: ");
scanf("%lf", &b);
printf("Enter coefficient c: ");
scanf("%lf", &c);
// Calculate discriminant
discriminant = b * b - 4 * a * c;
// Check discriminant to determine root types
if (discriminant > 0) {
// Two distinct real roots
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Two distinct real roots:\n");
printf("Root 1 = %.2f\n", root1);
printf("Root 2 = %.2f\n", root2);
} else if (discriminant == 0) {
// One real root (repeated)
root1 = -b / (2 * a);
printf("One real root (repeated):\n");
printf("Root = %.2f\n", root1);
} else {
// Complex roots
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Complex roots:\n");
printf("Root 1 = %.2f + %.2fi\n", realPart, imaginaryPart);
printf("Root 2 = %.2f - %.2fi\n", realPart, imaginaryPart);
}
return 0;
}
Compila el programa con la biblioteca matemática:
gcc quadratic_solver.c -o quadratic_solver -lm
Ejecuta el programa con diferentes escenarios:
./quadratic_solver
Ejemplo de salida (dos raíces reales):
Enter coefficient a: 1
Enter coefficient b: -5
Enter coefficient c: 6
Two distinct real roots:
Root 1 = 3.00
Root 2 = 2.00
Ejemplo de salida (una raíz real):
Enter coefficient a: 1
Enter coefficient b: -2
Enter coefficient c: 1
One real root (repeated):
Root = 1.00
Ejemplo de salida (raíces complejas):
Enter coefficient a: 1
Enter coefficient b: 2
Enter coefficient c: 5
Complex roots:
Root 1 = -1.00 + 2.00i
Root 2 = -1.00 - 2.00i
Puntos clave en el código:
- Utiliza la fórmula cuadrática para calcular las raíces
- Comprueba el discriminante para determinar el tipo de raíces
- Maneja tres escenarios: dos raíces reales, una raíz real, raíces complejas
- Utiliza la función
sqrt()de la bibliotecamath.h - Se compila con la bandera
-lmpara enlazar la biblioteca matemática
Imprimir soluciones reales o complejas
En este paso, mejorará el solucionador de ecuaciones cuadráticas para proporcionar una salida más detallada y manejar diferentes tipos de soluciones con un formato mejorado.
Abra el archivo existente y actualice el código:
cd ~/project
nano quadratic_solver.c
Reemplace el código anterior con el siguiente:
#include <stdio.h>
#include <math.h>
void printQuadraticSolutions(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
printf("Quadratic Equation: %.2fx² + %.2fx + %.2f = 0\n", a, b, c);
printf("Discriminant: %.2f\n", discriminant);
if (discriminant > 0) {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Solution Type: Two Distinct Real Roots\n");
printf("Root 1: %.2f\n", root1);
printf("Root 2: %.2f\n", root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("Solution Type: One Real Root (Repeated)\n");
printf("Root: %.2f\n", root);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("Solution Type: Complex Conjugate Roots\n");
printf("Root 1: %.2f + %.2fi\n", realPart, imaginaryPart);
printf("Root 2: %.2f - %.2fi\n", realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("Quadratic Equation Solver\n");
printf("------------------------\n");
printf("Enter coefficient a: ");
scanf("%lf", &a);
printf("Enter coefficient b: ");
scanf("%lf", &b);
printf("Enter coefficient c: ");
scanf("%lf", &c);
printf("\n");
printQuadraticSolutions(a, b, c);
return 0;
}
Compile el programa:
gcc quadratic_solver.c -o quadratic_solver -lm
Ejecute el programa con diferentes escenarios:
./quadratic_solver
Ejemplo de salida (dos raíces reales):
Quadratic Equation Solver
------------------------
Enter coefficient a: 1
Enter coefficient b: -5
Enter coefficient c: 6
Quadratic Equation: 1.00x² + -5.00x + 6.00 = 0
Discriminant: 1.00
Solution Type: Two Distinct Real Roots
Root 1: 3.00
Root 2: 2.00
Ejemplo de salida (una raíz real):
Quadratic Equation Solver
------------------------
Enter coefficient a: 1
Enter coefficient b: -2
Enter coefficient c: 1
Quadratic Equation: 1.00x² + -2.00x + 1.00 = 0
Discriminant: 0.00
Solution Type: One Real Root (Repeated)
Root: 1.00
Ejemplo de salida (raíces complejas):
Quadratic Equation Solver
------------------------
Enter coefficient a: 1
Enter coefficient b: 2
Enter coefficient c: 5
Quadratic Equation: 1.00x² + 2.00x + 5.00 = 0
Discriminant: -16.00
Solution Type: Complex Conjugate Roots
Root 1: -1.00 + 2.00i
Root 2: -1.00 - 2.00i
Mejoras clave:
- Se creó una función separada
printQuadraticSolutions()para una mejor organización del código - Se agregó una salida más descriptiva con el tipo de solución y detalles de la ecuación
- Se mantuvo la misma lógica de cálculo de raíces del paso anterior
- Se mejoró la interfaz de usuario con un título y un formato claro
Resumen
En este laboratorio (lab), aprenderás cómo leer los valores de entrada para una ecuación cuadrática en C, calcular el discriminante y determinar las raíces reales o complejas utilizando la fórmula cuadrática. El programa solicita al usuario que ingrese los coeficientes a, b y c, y luego calcula el discriminante para determinar la naturaleza de las raíces. Finalmente, el programa imprime las soluciones reales o complejas.
Los pasos clave cubiertos en este laboratorio incluyen leer la entrada del usuario para los coeficientes, calcular el discriminante y aplicar la fórmula cuadrática para encontrar las raíces. El programa también confirma los coeficientes de entrada y proporciona las soluciones calculadas.



