perl 怎么计算数组中相同数字的个数
#求Mr_A中每一列1,2,3,4,的个数,我编了一个小程序,有错误,但是不知道哪里错#N为Mr_A的行数;$count=0;for(my$i=0;$i<=$N-1;$i...
#求Mr_A中每一列1,2,3,4,的个数,我编了一个小程序,有错误,但是不知道哪里错
# N为 Mr_A的行数;
$count=0;
for (my $i=0; $i<=$N-1;$i++){
while ($Mr_A[$i][0]==1){
$count++;
}
}
print “$count\n”;
#以上程序是求数组Mr_A第一列中1的个数,不知道哪里错了 求大神、、
我的意思就是统计每一列的1,2,3,4 的个数,上面这个程序是统计第一列1的个数,但是打印不出来,不知道有没有办法解决啊 展开
# N为 Mr_A的行数;
$count=0;
for (my $i=0; $i<=$N-1;$i++){
while ($Mr_A[$i][0]==1){
$count++;
}
}
print “$count\n”;
#以上程序是求数组Mr_A第一列中1的个数,不知道哪里错了 求大神、、
我的意思就是统计每一列的1,2,3,4 的个数,上面这个程序是统计第一列1的个数,但是打印不出来,不知道有没有办法解决啊 展开
5个回答
展开全部
错在:
while ($Mr_A[$i][0]==1){
$count++;
}
因为 $Mr_A[$i][0] 如果是 = 1 的话, 那永远也是等於 1, 因为你在回路中没有改变过$Mr_A[$i][0] 的值, 所以就不可能跳出来了.
你可以这麼做的
foreach my $row ( 0.. $#Mr_A ) {
my %item;
foreach my $col ( @{$Mr_A{$row}} ) {
++$item{$col}
}
print "In Row $row: $/";
print "\tThere are $item{$_} of $_$/" foreach sort {$a<=>$b} keys %item;
print $/;
}
while ($Mr_A[$i][0]==1){
$count++;
}
因为 $Mr_A[$i][0] 如果是 = 1 的话, 那永远也是等於 1, 因为你在回路中没有改变过$Mr_A[$i][0] 的值, 所以就不可能跳出来了.
你可以这麼做的
foreach my $row ( 0.. $#Mr_A ) {
my %item;
foreach my $col ( @{$Mr_A{$row}} ) {
++$item{$col}
}
print "In Row $row: $/";
print "\tThere are $item{$_} of $_$/" foreach sort {$a<=>$b} keys %item;
print $/;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/usr/bin/perl
my @Mr_A = (
[1,2,3,4,0],
[2,3,4,0,1],
[3,2,4,4,0],
[0,2,3,1,4],
);
my %count_hash;
for(my $i=0; $i<=$#Mr_A;$i++){ #行循环
for(my $j=0; $j<=4; $j++) { #列循环
$count_hash{"column". $j . "_value".$Mr_A[$i][$j]} += 1;
}
}
foreach my $key (sort keys %count_hash) {
print "$key\t$count_hash{$key}\n";
}
column0_value0 1
column0_value1 1
column0_value2 1
column0_value3 1
column1_value2 3
column1_value3 1
column2_value3 2
column2_value4 2
column3_value0 1
column3_value1 1
column3_value4 2
column4_value0 2
column4_value1 1
column4_value4 1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while ($Mr_A[$i][0]==1) 这个数字0有问题 相对于只是数了每行的第一个
正确的做法是 两层for循环或者map等
正确的做法是 两层for循环或者map等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while应该修改为if吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询