Thread starten zwei Subs - Eingabe / Ausgabe
(4 answers)
Opened by Mara at 2011-12-29 11:45
Das mit dem kompilieren kannte ich noch gar nicht. Vielen dank für den Tipp! Das ist wirklich hilfreich. *freu*
Das hab ich mal gemacht, zu Beginn kam dann: Can't locate interger.pm in --- war also der erste Fehler use interger - rausgenommen, dann diesen Fehler auch bei den Subs behoben, dann gin die Matchersub soweit - aber die Präfix - Sub nicht, die hab ich dann einzeln überarbeitet und geprüft und jetzt sagt er das die Syntax soweit ok ist. und es kommen keine weiteren Fehlermeldungen wie vorher. So hab ich folgenden Code für die Subs nun *grübel* 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; # Berechnung des Präfix ###### sub ermorde_Knuth_next{ my($P)=@_; # das Muster use integer; my$m=(0..lenght($P)-1); my$i=0; my$j=-1; my @next; # Array for ($next[0] = -1; $i < $m; ) { while ( $j > -1 && substr( $P, $i, 1 ) ne substr( $P, $j, 1 ) ) { $j = $next[ $j ]; } $i++; $j++; $next[ $i ] = substr( $P, $j, 1 ) eq substr( $P, $i, 1 ) ? $next[ $j ] : $j; } return ($m,@next); # Länge des Musters und der Prefix Funktion } ############################################## # ######## Matcher sub ermorde_Knuth { my ( $T, $P ) = @_; # Text und Muster. use integer; my $m = ermorde_Knuth_next( $P ); #knuth_morris_pratt_next my ( $n, $i, $j ) = (length($T), 0, 0 ); my @next; while ( $i < $n ) { while ( $j > -1 && substr( $P, $j, 1 ) ne substr( $T, $i, 1 ) ) { $j = $next[ $j ]; } $i++; $j++; return $i - $j if $j >= $m; # Match - Hurra wir haben einen Treffer. } return -1;} |