/*
 * =====================================================================================
 *
 *       Filename: pierwiastki2. 
 *    Description:  Program wyznacza pierwiastki wielomiany stopnia 2.
 *
 * =====================================================================================
 */
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <float.h>

#define EPS FLT_EPSILON


/*  Zakladamy, ze 'a' jest rozne od 0. */
/*  Funkcja zwraca ilosc miejsc zerowych (0, 1 lub 2). 
 *  Wartosci pierwiastkow zwracane sa przez wskazniki x1 i x2. */
int miejsca_zerowe(float a, float b, float c, float *x1, float *x2)
{
   float delta;

   delta = b*b - 4*a*c;
   
   if( fabs(delta) < EPS )
   {
      *x1=-b/a/2;
      *x2=*x1;
      return 1;
   }

   if(delta >= EPS)
   {
      delta=sqrt(delta);
      *x1 = -(b-delta)/(2*a);   
      *x2 = -(b+delta)/(2*a);   
      return 2;
   }
   return 0;
}

int main(void)
{
   float a,b,c ;
   float x1, x2;
   int n;
   
   printf("a="); scanf("%f",&a);
   printf("b="); scanf("%f",&b);
   printf("c="); scanf("%f",&c);
   
   n=miejsca_zerowe(a,b,c,&x1,&x2);
   if( n == 0) printf("Brak miejsc zerowych\n");
   else 
   {
      if ( n==1 ) printf("Jedno miejsce zeorowe, x=%f\n", x1);
      else printf("Dwa miejsca zerowe, x1=%f, x2=%f\n",x1,x2);
   }

   return(0);
}
