Re: [问题] 读取档案的内容

楼主: clanguage (C语言)   2012-11-08 23:17:00
嗯, 以此问题来看, 我把右边的资料当成篮子的编号
左边的资料当成水果的总类, 每个统计表示该水果出现一次
程式如下:
#1. 依据资料获得篮子编号和水果编号
#2.a 将篮子统计到水果的总量 +1
#2.b 统计第几个篮子中出现第几种水果的编号 +1
#3. 将统计的结果印出
p.s. 若要印出你要的第0号水果, 把变量 $calc_all_fruit = 0 即可
程式输出:
Basket: 1, Fruit Kind: 0, amount: 2
Basket: 1, Fruit Kind: 1, amount: 1
Basket: 2, Fruit Kind: 0, amount: 2
Basket: 2, Fruit Kind: 1, amount: 1
Basket: 3, Fruit Kind: 0, amount: 1
Basket: 3, Fruit Kind: 2, amount: 1
Basket: 4, Fruit Kind: 0, amount: 1
Basket: 4, Fruit Kind: 1, amount: 1
my $baskets_ref;
my $fruit_in_baskets_ref;
my $calc_all_fruit = 1;
foreach (@strings) {
#1
if ( /(\d+)\s*(\d+)\s*/ ) {
my $fruit_kind = $1;
my $basket_num = $2;
#2
$baskets_ref->{ $basket_num } += 1;
$fruit_in_baskets_ref->{ $basket_num }->{ $fruit_kind } += 1;
}
}
foreach my $basket_num (sort keys %{ $baskets_ref }) {
foreach my $fruit_kind (sort keys %{ $fruit_in_baskets_ref->{ $basket_num }}) {
#3
if ($fruit_kind eq 0 || $calc_all_fruit > 0) {
print "Basket: $basket_num, Fruit Kind: $fruit_kind, amount: "
. "$fruit_in_baskets_ref->{ $basket_num }->{ $fruit_kind }"
. "\n"
;
}
}
}
※ 引述《hws110 ( only you )》之铭言:
: 您好,
: 感谢您的回答,
: 不好意思我没有表达清楚
: : 0 1
: : 0 2
: : 0 3
: : 0 4
: : 1 1
: : 0 2
: : 2 3
: : 1 4
: : 0 1
: : 1 2
: 右列的1.2.3.4是资料的代号
: 左列是取得的资料
: 而资料中,0出现的次数是我要计算的
: 以这串资料来说
: 我想要表示的是
: 1有3个 其中0有2个
: 2有3个 其中0有2个
: 3有2个 其中0有1个
: 4有2个 其中0有1个
: 请问这样要怎么表示呢?
: 感谢回答~
: ※ 引述《clanguage (C语言)》之铭言:
: : #!/usr/bin/perl
: : #1
: : my @strings = split '\n',
: : "
: : 0 1
: : 0 2
: : 0 3
: : 0 4
: : 1 1
: : 0 2
: : 2 3
: : 1 4
: : 0 1
: : 1 2
: : ";
: : #2
: : foreach (@strings) {
: : $data->{ $2 } += int($1) if /(\d+)\s*(\d+)\s*/;
: : }
: : #3
: : print "Number: $_, Times: $data->{ $_ } \n"
: : for sort keys %{ $data };
: : 程式输出:
: : Number: 1, Times: 1
: : Number: 2, Times: 1
: : Number: 3, Times: 2
: : Number: 4, Times: 1
作者: hws110 ( only you )   2011-01-08 23:56:00
感谢您,已试过是可以抓到我要的值的,感谢~

Links booklink

Contact Us: admin [ a t ] ucptt.com