/* 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.
*/