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