0
我想規範化我的數據。我寫了這個代碼:Perl:找到最大值然後除以最大值,通過比較值與數組位置
my $max1=0;
for (my $i=0; $i<=$#data; $i++) {
if ($data[$i][1]>$data[$max1][1]) {$max1=$i;}
#Disabled# if ($data[$i][1]>$max1) {$max1=$data[$i][1];}
}
for (my $i=0; $i<=$#data; $i++) {
print "$i\t$data[$i][0]\t$data[$i][1]\t$max1\t";
$data[$i][1] = $data[$i][1]/$data[$max1][1] * 10000;
#Disabled# $data[$i][1] = $data[$i][1]/$max1 * 10000;
print "$data[$i][0]\t$data[$i][1]\t$max1\n";
}
然而,這產生了一個錯誤:所有的值到最高位置時,由最大值是分開的,而最大位置後值不變,如果「/ $數據[$ MAX1 ] [1] * 10000「從未發生過。
但是,如果我通過陣列位置更改使用值進行比較,而不是,我得到了正確的結果:
my $max1=0;
for (my $i=0; $i<=$#data; $i++) {
#Disabled# if ($data[$i][1]>$data[$max1][1]) {$max1=$i;}
if ($data[$i][1]>$max1) {$max1=$data[$i][1];}
}
for (my $i=0; $i<=$#data; $i++) {
print "$i\t$data[$i][0]\t$data[$i][1]\t$max1\t";
#Disabled# $data[$i][1] = $data[$i][1]/$data[$max1][1] * 10000;
$data[$i][1] = $data[$i][1]/$max1 * 10000;
print "$data[$i][0]\t$data[$i][1]\t$max1\n";
}
我做了什麼錯代碼的第一位?
我認爲我們需要一些示例輸入數據和所需的輸出能夠告訴你。這看起來......凌亂。 – Sobrique