# # Znajdowanie pierwiastków rzeczywistych równania axx + bx + x = 0 # Metoda rozwiązania: wyznaczenie miejsc zerowych # równania kwadratowego lub równania liniowego. # Wejście: wartości przeczytane z wejścia standardowego; kolejno a, b, c # Wyjście: wartości umieszczane na wyjściu standardowym: # najpierw liczba rozwiązań, # jeżeli liczba rozwiązań>0, to kolejna dana zawiera pierwsze rozwiązanie, # jeżeli liczba rozwiązań>1, to kolejna dana zawiera drugie rozwiązanie. # Liczba rozwiązań=-1 oznacza, ze równanie jest spełnione tożsamościowo. # Program nie wyznacza wtedy pierwiastków. # Ograniczenia: dane na wejściu muszą być liczbami w postaci dziesiętnej lub półlogarytmicznej. Każda liczba w osobnym wierszu. # # miejsce rozpoczęcia wykonywania programu # pobranie danych z wejścia standardowego $a = ; $b = ; $c = ; # przebieg obliczeń zaprojektowany dla wszystkich możliwych przypadków if ($a != 0.0) { $delta = $b**2 - 4*$a*$c; if ($delta >= 0.0) { $delta = $delta**0.5; $liczbax = 2; $x1 = (-$b + $delta)/(2*$a); $x2 = (-$b - $delta)/(2*$a); } else { $liczbax = 0; } } else { if ($b != 0.0) { $liczbax = 1; $x1 = -$c/$b; } else { if ($c != 0.0) { $liczbax = 0; } else { $liczbax = -1; } } } # wysłanie wyników na wyjście standardowe print STDOUT $liczbax . "\n"; if ($liczbax>0) { print STDOUT $x1 . "\n"; if ($liczbax>1) { printf STDOUT $x2 . "\n"; }; };