/*
 * =====================================================================================
 *
 *       Filename:  uklad.c
 *    Description:  Uklad 2 rownan liniowych - wersja z tablicami
 *        Created:  10.12.2013 13:11:53
 *         Author:  Marek Grochowski 
 *
 * =====================================================================================
 */

#include <stdio.h>
#include <math.h>
#define EPS 0.000001

/*  t[] - 6 elementowa tablica wspolczynnikow ukladu rownan.
 *  x[] - 2 elementowa tablica rozwiazan*/
int uklad(float t[], float x[])
{
   float w, wx, wy;

   w = t[0]*t[4]-t[1]*t[3];
   wx = t[2]*t[4] - t[5]*t[1];
   wy = t[0]*t[5] - t[2]*t[3];
   if( fabs(w) < EPS )
   {
      if( fabs(wx) < EPS && fabs(wx) < EPS ) return 0;
      return -1;
   }
   x[0] = wx/w;
   x[1] = wy/w;
   return 1;
}

int main()
{
   float r[6], x[2];
   int k;

   printf("Podaj wspolczynniki ukladu rownan\nax + by = c\ndx + ey = f\n");
   printf("a= "); scanf("%f",&r[0]);
   printf("b= "); scanf("%f",&r[1]);
   printf("c= "); scanf("%f",&r[2]);
   printf("d= "); scanf("%f",&r[3]);
   printf("e= "); scanf("%f",&r[4]);
   printf("f= "); scanf("%f",&r[5]);

   /*  tu wywolanie funkcji 'uklad'  */  
   k= uklad(r, x );

   if(k == 1) printf("Uklad posiada rozwiazanie\nx=%f y=%f\n",x[0],x[1]);
   else if(k == 0) printf("Uklad nie posiada jednego rozwiazania\n");
   else printf("Uklad jest sprzeczny\n");

   return 0;
}
