*/ Résolution d'une équation du second degré à coefficients réels (à compléter) */
/*--------------------------- Liste des constantes ---------------------------*/
#define EPSILON 1e-10 /* pour définir la limite (arbitraire) entre un réel nul et non nul */
/*--------------------------- TYPES ENUMERES : -------------------------------*/
/* le type énuméré caractérise ici les valeurs prises par le nombre de solutions de l'équation :
*/
typedef enum {PAS_DE_SOL,PAS_DE_SOL_REELLES,UNE_SOL_REELLE,DEUX_SOL_REELLE,INFINITE_DE_SOL } T_NombreDeSolutions ;
/*--------------------------- TYPES STRUCTURES : ----------------------------*/
/* un seul type structuré ici, qui réunit toutes les informations concernant l'équation : */
typedef struct
{
    double a, b, c ; /* 3 champs d'entrée : les coeff de l'équation aX^2 + bX + c = 0 */
    T_NombreDeSolutions nb_sol; /* 1 champ de sortie : le nombre de solutions réelles ou non réelles */
    double X1, X2 ; /* 2 champs de sortie : les solutions réelles, SI elles existent */
} T_equation ;
void main (void)
{
    /* définition des variables locales (dans ce main, ce sont des données de test): */
    T_equation eq_test = {1, -2, 1 }; /* on initialise seulement les 1ers champs = champs d'entrée */
    T_equation eq;
    double delta ;
    /* saisie des données (simple ici, grâce aux données INITIALISEES en vue du test): */
    eq = eq_test ; /* affectation entre variables structurées */
    /* calculs : */
    delta = eq.b * eq.b - 4 * eq.a * eq.c ;
    /* ATTENTION, le traitement ci-dessous est à compléter (un seul cas est traité) : */
    if ( fabs(delta) < EPSILON ) /* cas où delta est "nul" (cad de valeur absolue très petite) */
    {
        eq.nb_sol = UNE_SOL_REELLE ;
        eq.X1 = -eq.b/(2*eq.a) ;
    }
// else if (...) else ...
    /* les résultats sont à visualiser au debugger */
}
