- 締切済み
代入された数値の繰り返し
同じような質問をしていると思うのですが、外部ファイルの数値をそのまま出力するのではなく、外部ファイルの数値を、ある値で代入した数値を出力したいと考えています。 以下の.plファイルを作成しました。 for($line =0;$_ =<stdin>;$line++){ if($line < 400){ @line = split/,/,; $calibration1 +=$line[1]; $zero +=$line[2]; }elsif($line < 800){ @line = split/,/,; $calibration2 +=$line[1]; }else{ @line = split/,/,; $pressure =$line[2]; } } $zeroten = $zero / 400; $calibration = ( $calibration2 - $calibration1 ) / 400; for ($i=0;$i <= $pressure;$i++) { $pressure_data = ( $i - $zeroten ) / $calibration; print"$pressure_data \n"; } 13行目までで、外部ファイルの数値の合計を算出しました。(15、16行目で平均値としていますが・・・) 19行目以降で、9~12行目の値を15、16行目で算出した値を代入して、その代入した数値を出力したいと考えています。 上で示した.plファイルでは何も表示(エラー表示もないです)されませんでした。 外部ファイルは下のようになっています。 1,10,22 2,20,33 3,30,44 ・ ・ ・ 19行目以降が間違っていると思うのですがどうすればよいのでしょうか。(基本的なことかもしれないですけど・・・) お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
まずは、問題を整理しましょう。 設計をちゃんとしましょう。 どうやったら、やりたいことができるのか、日本語(日本語が不案内なら、あなたが普段使っている言葉)で「手順書」を作りましょう。 初心者ならなおのことです。 どうやったら問題解決できるのか、その方法もわからずにプログラム作っても、正常に動作するわけがありません。 > for ($i=0;$i <= $pressure;$i++) { この$pressure、何が入っていると考えているのですか? > $pressure_data = ( $i - $zeroten ) / $calibration; これは、 ( 「$iの数値(上記forで、0から$pressureまで変化)」 - $zeroten ) / $calibration です。決して ( 「$iの行目のデータ」 - $zeroten ) / $calibration ではありません。 > (22 - $zeroten) / $calibration > (33 - $zeroten) / $calibration > (44 - $zeroten) / $calibration とはなりません。
- SherlockHolmes2
- ベストアンサー率40% (175/429)
>外部ファイルの数値を、ある値で代入した数値を出力したいと考えています。 もう少し具体的な詳細内容を教えて頂けませんか? それから、プログラムですが、$line , @lineが、ごっちゃになってませんか? for文で使用するlineと、splitで分割した結果を入れてるlineが一緒になってしまっているようですが・・。 こういうロジックだという前提なのでしょうか。 あと、splitって、カッコで括らなくて大丈夫でしたっけ??
補足
回答ありがとうございます。計算手順ですが 13行目までで、外部ファイルの2行目、3行目それぞれの数値の合計を算出しました。 15行目は外部ファイルの3行目の数値の合計を400で割っています。 16行目は外部ファイルの2行目の数値(401から801までの合計-1から400までの合計)を400で割っています。 15、16行目で算出した値を、19行目で外部ファイル(13行目で処理したファイルと同じファイルです。)の3行目の値に代入していきます。 (22 - $zeroten) / $calibration (33 - $zeroten) / $calibration (44 - $zeroten) / $calibration ・ ・ ・ これをコマンド上に出力したいと考えています。(初めの質問の説明が変でした。)
お礼
回答ありがとうございます。 1行目のように書きましたが、意味が違いました。