[PERL] obliczanie różnicy między datami
Napisz skrypt w języku Perl zawierający dwie tablice przechowujące odpowiednio nazwy miesięcy i ilości dni w miesiącach. Kod skryptu ma wczytać z klawiatury dwie daty w postaci :
nazwa miesiąca słownie oraz numer dnia numerycznie
a następnie obliczyć liczbę dni dzielących obie daty i wypisać wynik.
#!/usr/bin/perl use warnings; @miesiace = ( "styczen", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien" ); @dni = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); print "Wszystkie miesiące należy podawać słownie, używając tylko małych liter bez polskich znaków.n"; print "Podaj pierszą datę (miesiąc dzień): "; $d1 = <STDIN>; print "Podaj drugą datę (miesiąc dzień): "; $d2 = <STDIN>; ($m1, $d1) = split(/W/, $d1, 2); ($m2, $d2) = split(/W/, $d2, 2); if($m1 eq "" || $m2 eq "") { print "Nie podano nazw miesięcy!n"; exit; } if($d1 eq "" || $d2 eq "") { print "Nie podano liczby dni!n"; exit } for($i = 0; $i < 12; $i++) { if($miesiace[$i] eq $m1) { $nr_m1 = $i; } if($miesiace[$i] eq $m2) { $nr_m2 = $i; } } if(!defined($nr_m1)) { print "Nie znaleziono miesiąca $m1!n"; exit; } if(!defined($nr_m2)) { print "Nie znaleziono miesiąca $m2!n"; exit; } if($d1 > $dni[$nr_m1] || $d1 < 1) { print "Miesiąc $m1 nie ma $d1 dni!n"; exit; } if($d2 > $dni[$nr_m2] || $d2 < 1) { print "Miesiąc $m2 nie ma $d2 dni!n"; exit; } if($nr_m1 == $nr_m2) { if($d1 > $d2) { $suma = $d1 - $d2; } else { $suma = $d2 - $d1; } } else { if($nr_m1 > $nr_m2) { $tmp_m = $nr_m1; $nr_m1 = $nr_m2; $nr_m2 = $tmp_m; $tmp_d = $d1; $d1 = $d2; $d2 = $tmp_d; } for($i = ($nr_m1 + 1); $i < $nr_m2; $i++) { $suma += $dni[$i]; } $suma += ($dni[$nr_m1] - $d1) + $d2; } print "Różnica dni wynosi: $suma"; |