/*
 * Problema 9. Escreva uma função com protótipo
 * 
 * int Bhaskara(double a, double b, double c, double *r1, double *r2);
 * 
 * que recebe três reais como parâmetros representando os coeficientes
 * da equação ax^2 + bx + c = 0 e devolve 1 se a equação tem raízes
 * reais e devolve 0 caso contrário. Ademais, Bhaskara() deve devolver
 * em *r1 e *r2 as raízes reais da equação, quando existem.
 * Finalmente, escreva um programa que lê números reais a, b, e c e,
 * usando a função acima, imprime as raízes reais r1 e r2 da equação
 * q(x) = 0 onde q(x) = ax^2 + bx + c. Seu programa deve também
 * imprimir q(r1) e q(r2).
 */

#include <stdio.h>
#include <math.h>

int Bhaskara(double a, double b, double c, double *r1, double *r2);
double q(double a, double b, double c, double x);

int main(int argc, char *argv[])
{
  double a, b, c, r1, r2;

  scanf("%lf %lf %lf", &a, &b, &c);

  if (Bhaskara(a, b, c, &r1, &r2) == 0) {
    printf("Equacao nao tem raizes reais.\n");
    return 0;
  }

  printf("r1 = %f\n", r1);
  printf("r2 = %f\n", r2);

  printf("q(%f) = %.15f\n", r1, q(a, b, c, r1));
  printf("q(%f) = %.15f\n", r2, q(a, b, c, r2));
  
  return 0;
}

double q(double a, double b, double c, double x)
{
  return a*x*x + b*x + c;
}

int Bhaskara(double a, double b, double c, double *r1, double *r2)
{
  double D = b*b - 4.0*a*c;

  if (D < 0.0)
    return 0;

  *r1 = (-b + sqrt(D)) / (2.0*a);
  *r2 = (-b - sqrt(D)) / (2.0*a);

  return 1;
}
