Thread Probleme mit splice. Warum geht dat net???
(11 answers)
Opened by Alvin at 2008-01-12 17:22
Hi,
ich hab mal wieder ne Frage. Ich habe folgendes programmiert (teilweise dank eurer Hilfe!): #USAGE: ./alvin.pl 6 3 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 #!/usr/bin/perl use strict; use warnings; my $init_popsize=$ARGV[0]-1; my $maxtime=$ARGV[1]; my @age; my @gender; my @weight; my @population = (0..$init_popsize); for my $i(0..$#population){ $age[$i]=int(rand(10)); #Alter my $r1=rand(); if($r1<=0.4){ #Geschlecht (0=männlich, 1=weiblich) $gender[$i]=0; } else{ $gender[$i]=1; } my $r2=rand(); if ($r2<=0.3){ #Gewicht $weight[$i]=0; } elsif ($r2>0.3 && $r2<=0.6){ $weight[$i]=1; } else{ $weight[$i]=2; } printf "$age[$i] $gender[$i] $weight[$i]\n"; } printf "\n"; Aussen: 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 for my $t (1..$maxtime){ Innen: for my $i (0..$#population){ $age[$i]++; if ($age[$i]>=10){ splice (@age, $i, 1); splice (@weight, $i, 1); splice (@gender, $i, 1); splice (@population, $i, 1); # $age[$i]++; next Innen; } } for my $i (0..$#population){ printf "$age[$i] $gender[$i] $weight[$i]\n"; } my $population=$#population+1; printf "\npopulation: $population\n"; } So...nun mein Problem: als Ausgabe erhalte ich unter anderem für das Alter age[i] z.B.: 4 5 7 9 1 7 soweit so gut, aber wenn jetzt, wie gewünscht, die 9 durch splice rausfliegt und alle um age++ um eins erhöht werden kommt folgendes 5 6 8 1 8 die 9 ist weg, wie gewünscht, die 4,5,7 und die letzte 7 wurden um 1 erhöht, aber die 1 wurde nicht erhöht. Warum??? Hab schon dran gedacht nach den splice Befehlen i-- zu machen, aber bringt auch nix. Aber wenn ich nach den splice Befehlen das oben auskommentierte age++ benutze geht es, aber ich kapier nicht warum er das nicht ohne dieses macht??? Danke schon mal für die Hilfe!!! P.S. Hoffe mein Problem ist verständlich geworden??? edit pq: perl-tags hinzugefügt |