/* Laboratorium 1 - Edytor Emacs, kompilator języka C */
/* 17.10.2022, */
/* 
    kompilacja: Sun C: cc -xc99 -Xc trojmian.c -lmg
                GNU C: gcc -std=c99 -pedantic -Wall trojmian.c -lm */
#include <stdio.h>
#include <math.h>

int main() {
  float a,b,c,delta;

  printf("Program oblicza pierwiastki rownania w postaci\\n");
  printf("     2\\n");
  printf("  a x + b x +c =0\\n");
  printf("Podaj wartosc a:");
  scanf("%f",&a);
  printf("Podaj wartosc b:");
  scanf("%f",&b);
  printf("Podaj wartosc c:");
  scanf("%f",&c);
  
  if (a==0.0)    /*przypadek rownania liniowego */
    if (b!=0.0) 
      printf("Jest to równanie liniowe o rozwiazaniu x=%f\\n",-c/b);
        else  if (c==0.0)  /* oraz a==b==0.0 */
      printf("Rozwiazaniem jest dowolne x\\n");
    else              /* a==b==0.0 != c  */
      printf("Brak rozwiazan\\n");
  else {   /*przypadek rownania kwadratowego */
    delta=pow(b,2)-4.0*a*c;
    if (delta<0) 
      printf("Brak rozwiazan rzeczywistych\\n");
    else            /* delta>=0 */
      if (delta>0) 
        printf("Rozwiazaniem sa x1=%f i x2=%f\\n",(-b-sqrt(delta))/(2*a),(-b+sqrt(delta))/(2*a));
      else
        printf("Rozwiazaniem sa x1=x2=%f\\n",-b/(2*a));
  }

}
/* Test miał na celu sprawdzenie czy udała nam się kompilacja oraz czy program działa dla różnych danych wejściowych.
Przebieg testu:
   [a=, b=, c=]
1. [1, 2, 10] delta była mniejsza od zera        - dobry wynik [brak rozwiązań rzeczywistych]
2. [2, 4, 2]  delta równa zero                   - zły wynik [a=2 b=4 c=2 wyszło x=-4 [poprawny -1]]
   Trzeba było dodać w 38 linijce nawiasy -b/(2*a).
3. [2, 4, 2]  delta równa zero poprawiona        - dobry wynik [x1 = x2 = -1.000000]
4. [2, 6, 2]  delta większa od zera              - dobry wynik [x1=-2.618034 i x2=-0.381966]
5. [2, 6, -1 * 10^20] wynik dla dużych danych    - wynik przybliżony, niedokładny [x1=-7071067884.220676 i x2=7071067881.220676]
6. [0.5, 2.5, 2] wynik dla niecałkowitych danych - dobry wynik [x1=-4.000000 i x2=-1.000000]
7. [-5, -4, 1]   wynik dla ujemnych danych       - dobry wynik [x1=0.200000 i x2=-1.000000]
8. [0, 4, 2]     wynik dla równania linowego     - dobry wynik [x=-0.500000]
9. [0, 0, 8]     wynik dla równania stałego      - dobry wynik [Brak rozwiazan]
10.[0, 0, 0]     wynik dla r. tożsamościowego    - dobry wynik [Rozwiazaniem jest dowolne x]
11.[a = tekst] - program nie liczy delty i pisze:
   ["Podaj wartosc a:tekst
   Podaj wartosc b:Podaj wartosc c:Jest to równanie liniowe o rozwiazaniu x=-NaN]

   Program działa poprawnie.
*/