ProgIng - Programación en Ingeniería
Loading...
Searching...
No Matches
Ejemplo005.c File Reference

Solución de la ecuación cuadrática con raíces reales o complejas. More...

#include <stdio.h>
#include <math.h>
Include dependency graph for Ejemplo005.c:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 Punto de entrada. Calcula y muestra raíces (reales o complejas).

Detailed Description

Solución de la ecuación cuadrática con raíces reales o complejas.

Resuelve: a x^2 + b x + c = 0 usando el discriminante: Δ = b^2 - 4ac

Casos:

  • Δ > 0: dos raíces reales distintas
  • Δ = 0: una raíz real doble
  • Δ < 0: dos raíces complejas conjugadas

Para Δ < 0: sqrt(Δ) = i*sqrt(-Δ) y las raíces se expresan como: x = (-b ± i*sqrt(-Δ)) / (2a)

Entrada
Tres valores float, leídos por consola (a, b, c).
Salida
Imprime las dos raíces en forma: x = real + imag*i
Warning
Si a = 0 la ecuación no es cuadrática; este programa divide entre (2a).
Complejidad
Tiempo: O(1). Memoria: O(1).

Definition in file Ejemplo005.c.

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Punto de entrada. Calcula y muestra raíces (reales o complejas).

Parameters
argcNo usado.
argvNo usado.
Returns
0 si finaliza correctamente.

Definition at line 44 of file Ejemplo005.c.

45{
46 (void)argc;
47 (void)argv;
48
49 float a, b, c; /* coeficientes */
50 float r; /* discriminante Δ */
51 float x1r, x1i, x2r, x2i; /* partes real/imag de cada raíz */
52
53 printf("Ingrese el termino cuadratico: ");
54 scanf("%f", &a);
55
56 printf("Ingrese el termino lineal: ");
57 scanf("%f", &b);
58
59 printf("Ingrese el termino independiente: ");
60 scanf("%f", &c);
61
62 /* Δ = b^2 - 4ac */
63 r = b*b - 4*a*c;
64
65 /*
66 Para Δ >= 0:
67 x1 = (-b + sqrt(Δ)) / (2a), parte imaginaria 0
68 x2 = (-b - sqrt(Δ)) / (2a), parte imaginaria 0
69
70 Para Δ < 0:
71 parte real: (-b)/(2a)
72 parte imag: ± sqrt(-Δ)/(2a)
73 */
74 x1r = (-b + (r >= 0 ? sqrt(r) : 0)) / (2*a);
75 x1i = (r >= 0 ? 0 : sqrt(-r) / (2*a));
76
77 x2r = (-b - (r >= 0 ? sqrt(r) : 0)) / (2*a);
78 x2i = (r >= 0 ? 0 : -x1i); /* conjugada */
79
80 printf("x1 = %.4f%+.4fi\n", x1r, x1i);
81 printf("x2 = %.4f%+.4fi\n", x2r, x2i);
82
83 return 0;
84}