Thread Zinstage (13 answers)
Opened by bianca at 2012-08-30 08:17

bianca
 2012-08-30 08:51
#161473 #161473
User since
2009-09-13
6980 Artikel
BenutzerIn

user image
Habe mal was gebastelt. War doch nicht so kompliziert wie gedacht.

Wäre nett, wenn jemand nachrechnen würde, ob da noch ein Denkfehler drin ist.

Vielen Dank!
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/perl -w
use strict;
use warnings;
my %test = (
    1   => {
        von     => '02.05.2011',
        bis     => '30.06.2011',
        soll    => 58,
    },
    2   => {
        von     => '02.05.2011',
        bis     => '30.07.2011',
        soll    => 88,
    },
    3   => {
        von     => '02.05.2011',
        bis     => '30.01.2012',
        soll    => 268,
    },
    4   => {
        von     => '02.05.2011',
        bis     => '30.07.2012',
        soll    => 448,
    },
    5   => {
        von     => '02.05.2011',
        bis     => '28.05.2011',
        soll    => 26,
    },
    6   => {
        von     => '02.05.2011',
        bis     => '01.04.2011',
        soll    => -31,
    },
);
foreach my $lfdnr (sort {$a <=> $b} keys %test) {
    my %callback = (
        von => $test{$lfdnr}{von},
        bis => $test{$lfdnr}{bis},
    );
    zinstage(\%callback);
    print "$lfdnr - $test{$lfdnr}{von} - $test{$lfdnr}{bis} soll $test{$lfdnr}{soll}: $callback{tage} ".($callback{tage} == $test{$lfdnr}{soll} ? 'OK' : 'FEHLER!'.chr(7))."\n";
}
############################
sub zinstage {
    my ($callback) = @_;
    my @von = split /\./,$callback->{von};
    my @bis = split /\./,$callback->{bis};
    $von[0] = 30 if $von[0] > 30;
    $bis[0] = 30 if $bis[0] > 30;
    $callback->{tage} = 30 - $von[0] + $bis[0];
    if ($von[1] + 1 != $bis[1]) {
        $callback->{tage} += ($bis[1] - $von[1] - 1) * 30;
    }
    if ($bis[2] > $von[2]) {
        $callback->{tage} += ($bis[2] - $von[2]) * 360;
    }
}
10 print "Hallo"
20 goto 10

View full thread Zinstage