• 締切済み

perlで一定の範囲ごとにカウントさせる方法について教えてください。

kmeeの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

今回の条件(上限下限が決まっている。定間隔)だったら $val=( 読み込んだ値 ) だとして、 $minval = -10 ; # 最小値 $maxval = 10 ; # 最大値 $stepval = 10 ; # 0.1の逆数 if ( $val < $min ) { $level = 0 ; } elsif ( $val >= $maxval ) { $level= 199; # ≦10のための処理 }else{ $level =int(($val - $minval) * $stepval) ; #区間番号0~199 } $count[ $level ] += 1 ; 表示は for($i=0;$I<200;++$i){ $start = $minval + $i / $stepval ; $end = $minval + ($i+1) / $stepval ; $mid = ($start + $end)/2 ; printf "%5.2f %d\n", $mid, $count[$i]; }

関連するQ&A

  • プログラム/perl カウントについて

    プログラム初心者です. 現在,プログラムの書き換えを行っているところです. (言語はperlです 以下のプログラムのnextの前に, 「$bbをカウントし, $bbが2回出てきたらlast」 というプログラムを書きたいと思っています. ------------------------ if($honbun =~ /$boundary/) { $bb++;         if($bb >=2)         {      last; } next; } ---------------- カウントする変数を使うべきだと思うのですが,どのようにすればいいでしょうか; 初心者質問で申し訳ないです.

  • エクセルである指定した範囲のカウント

    エクセルで通常カウントは、以下のように、B2:B5と範囲指定しますが、 COUNTIF(B2:B5,">55") ある一定のセルをカウントしようとしたのですが、うまくいきません・・・。 たとえば、E8,G8I8をカウントの対象としたいとき、書式はどのようにすればいいでしょうか? やりたいことは、上記のように、そろってない範囲のセルで、17以上はいくつか?など、ある数値以上になっているセルの数をカウントすることです。

  • Perl。文字出現回数を重複しないでカウントしたい。

    perl初心者です。どうぞ助けて下さい。 以下のようにデータがならんでいる時、 pphhhppphhhppppppphhppppppppppppppppppphhh pが連続した文字の連続数は 2、3、7、19 となります。 今、知りたいのはこのようなpの連続数の出現回数です。つまり、たとえばpが19回連続してあるものは何回でてきたか、が知りたいのです。 上の例だと1回が正解となります。 ところが、スクリプトを書くとき、 たとえば以下のようにしたとき、 pが19回なら重複カウントはなくても、 pを2でカウントしたら、 本当に出てきて欲しいこたえは一回なのに、 P=3、7、19のどれにも該当してしまいます。 #!/usr/bin/perl ; open(IN, "text1.txt") or die ; open(OUT, ">text1out.txt"); while(<IN>) { chomp ; if (/(\S+)/) { $name = $1 ; if ($name =~ /^ppppppppppppppppppp/) { {$count++;} ; } print OUT "$count\n" ; } } close (IN) ; close (OUT) ; 正規表現の中を工夫すればいいのだと思いますが、 大変困っております。宜しくお願いします。

    • ベストアンサー
    • Perl
  • perl ファイルのデータを編集したい

    初めまして、perl をやり初めたばかりです。作業は Linux 上で行ってます。 あるテキストファイル data.txt があります。 data.txt の中は、以下のようになっているとします。 100 200 300 400 500 600 これを読み込んで、例えば、 1 2 3 4 5 6 以上の様に各数字を百分の一にして出力したいと思ってます。 一応、色々と調べながらプログラムを書いてはみましたが 思う様に出力されません。以下そのプログラム。 #!/usr/bin/perl open(IN, "data.txt") or die ; @x = <IN>; close (IN); $ref_x = \@x; $n_data = @x; for ($i = 0; $i< $n_data; ++$i) { $$ref_x[$i] /= 100 ; print $x[$i], " "; } print"\n"; どなたか、perl にお詳しい方教えていただけないでしょうか? 宜しくお願い申し上げます。

  • 数値のカウント

    列、行、共に100セル位の中から、特定の数字を指定しカウントしたいのですが 上手く出来ません。 *今の方法 ・SUMIFで範囲を指定し、カウントしたい数値を指定 ・返ってくる数値は指定した数値を合計した数  (例・5をカウントさせると、20を返してくる。指定範囲を見ると5が4個ある) *したい事 ・合計せずにカウントだけしたい ヒントや方法などアドバイスお願いします

  • Excelの範囲内カウント方法について

    Excelの指定した範囲内のセルに入力されている国語、数学、社会の個数をカウントしたい場合です。カウントイフの数式+でつなぐ方法しかないんですか?

  • Perlのプログラミングについて

    Perlのプログラミングでつまづきました。 # ファイルから指定文字列を含む行を収集する # 入力ファイルのオープンと読み込み print( "入力ファイル名?" ); $n = <STDIN>; chomp( $n ); open( FIN, "<$n" ) or die "入力ファイルオープンエラー: $!\n"; $n = @a = <FIN>; close( FIN ); print( "$n 行読み込みました\n" ); # 行の収集 print( "検索文字列?" ); $x = <STDIN>; chomp( $x ); $ptn = $x; #指定の文字列 $x = @b = grep( /$ptn/, @a ); print( "$x 行見つかりました\n" ); # 出力ファイルのオープンと書き出し print( "出力ファイル名?" ); $y = <STDIN>; chomp( $y ); open( FOUT, ">$y" ) or die "出力ファイルオープンエラー: $!\n"; print FOUT ( $ptn, "\n" ); print FOUT ( $x, "\n" ); print FOUT ( @b ); close( FOUT ); というプログラムで実行すると C:\My Perl\pl>perl プログラムの実行.pl 入力ファイル名?sample1.txt 168 行読み込みました 検索文字列?k 45 行見つかりました 出力ファイル名?out3-24.txt 続行するには何かキーを押してください . . . となり出力ファイルの中身が表示されません。 どこを間違えているのかご指摘いただけないでしょうか?

  • カウントの方法を教えて下さい。

    カウントの方法を教えて下さい。 Excel2003を使っています。A1~E30のセルに11~51、12~52、13~53・・・の数字がバラバラに入力されています。 この範囲の中から頭の数字が1、2、3、4、5が付く数をカウントしたいのですが、宜しくお願いします。

  • terapadを使って、perlについての問題です。

    terapadを使って、perlについての問題です。 第一問はある英語の文書ファイルから、その文書の段落の数、文の数、単語の数をカウントするプログラム。段落の区きりが改行で、文の区きりは、「 .」(半角スペース2個に.1個)で、文字の区きりは、「 」(半角スペース)あるとする。 第二問はある単語ファイル(例えばtest.txt)に乗っている単語リスト(1行1単語)の単語の意味を調査し(辞書は先に用意したファイルで調査するdictionary.txt)、その結果をファイルに保存するプログラムを作成するプログラム。(ファイル名をout.txtする)そのプログラムを提出すること。 誰か教えてください、プログラミングの初心者なので…全く思いつかない。><

  • perl文末文字列カウントプログラム

    perl の文字列カウント こんにちは。初質問になります。perのlプログラミングについての質問です。 ある文章の「文末」の文字列をカウントし、出力するプログラムをつくりたいと思っています。 以下の文字列カウントプログラムを元に作りたいのですが、正規表現の文末指定のつけどころが恥ずかしながらわかりません。 <テキストデータ例> やまだくんはみかんを食べています!!たかしくんはりんごを食べています!! ひろしくんは好きなみかんを食べています!! ??よしこさんは嫌いなりんごを食べていますか?? かなえさんはいつもぶどうを食べています(^-^) ひろしくんはみかんが好きです(^-^)しかし、ゆうじくんはみかんは好きではありません(^-^) ひろみさんはみかんとぶどうは嫌いです!!しかし、りんごは好きです。 たとえば上のテキストデータを読み込み 文末のビックリマーク、クエスチョンマークの文字列を検出し 個数をカウントし出力するするようなプログラムです。 <出力結果> (^-^) 2 !! 2 ?? 1 となるようにしたいです。 以下のプログラムだと文末に限らずリストにあてはまる全ての記号がカウントされてしまいます。 @arr = qw('(^-^)','!!','??' ); $fname = "input.txt"; open(IN,"$fname") || &error("Can't open $fname"); read(IN,$buff,-s IN); close (IN); foreach (@arr){ $cnt = scalar( () = $buff =~ /$_/g ); print "$_ $cnt\n"; }