[PERL] trójmian kwadratowy
Napisz skrypt w języku Perl obliczający i wypisujący na konsolę wynik rozwiązania trójmianu kwadratowego dla liczb rzeczywistych. Współczynniki trójmianu a, b, c mogą być wczytane z konsoli w trakcie działania skryptu lub podane jako parametry wywołania skryptu. Skrypt ma zawierać i posługiwać się funkcją delta obliczającą wartość, tzw. delty, wg. wzoru d = b2 - 4 ac.
#!/usr/bin/perl #use warnings; if(@ARGV) { if(@ARGV != 3) { print "Podano niewłaściwą liczbę argumentów: " .@ARGV. "n"; } elsif($ARGV[0] eq "0") { print "Parametr a nie może być zerem!n"; } else { @arg = @ARGV; foreach (@ARGV) { if(!/^-?[0-9]+.?[0-9]*$/) { print "Nieprawidłowy format argumentu: $_n"; undef(@arg); } } } } if(!@arg) { print "y = ax^2 + bx + cn"; print "Podaj parametr a: "; my $a = 0; while(chomp($a = <STDIN>) && ($a !~ /^-?[0-9]+.?[0-9]*$/ || $a == 0)) { if($a == 0) { print "Parametr a nie może być zerem!n"; } else { print "Podano nieprawidłowy parametr!n"; } print "Podaj parametr a: "; } print "Podaj parametr b: "; my $b = 0; while(chomp($b = <STDIN>) && $b !~ /^-?[0-9]+.?[0-9]*$/) { print "Podano nieprawidłowy parametr!n"; print "Podaj parametr b: "; } print "Podaj parametr c: "; my $c = 0; while(chomp($c = <STDIN>) && $c !~ /^-?[0-9]+.?[0-9]*$/) { print "Podano nieprawidłowy parametr!n"; print "Podaj parametr c: "; } @arg = ($a, $b, $c); } sub Delta { $delta = ($_[1] * $_[1]) - (4 * $_[0] * $_[2]); $delta; } $d = &Delta(@arg); print "Delta wynosi: $dn"; if($d < 0) { print "Brak rozwiązań w liczbach rzeczywistychn"; } elsif($d == 0) { $x1 = -$arg[1] / (2 * $arg[0]); print "Rozwiązanie: jedno miejsce zerowe.n"; print "x = $x1n"; } elsif($d > 0) { $x1 = (-$arg[1] - sqrt($d)) / (2 * $arg[0]); $x2 = (-$arg[1] + sqrt($d)) / (2 * $arg[0]); print "Rozwiązanie: dwa miejsca zerowen"; print "x1 = $x1, x2 = $x2n"; } |