2016-04-19 8 views
0

私はではありませんこの問題の解決策を探しています。私はこの課題で何を達成しようとしていなければならないのか理解できない。私は擬似コードやヒントを歓迎します。しかし私が本当に必要とするのは、私が作っている必要があるもの、そして出力がどのように見えるかということです。私は自分でそれを試してみたいと思いますが、たくさんのコードを書く必要はありません。課題の説明

は(())

私からメモを=割り当てがある:プログラム(prog.exe)

((我々はこのプログラムを与えられる))2つの整数(M、N)を読み取ると入力データファイルinput.inから1 double(a)例えば、与えられたファイルinput.inサンプルを使用すると、出力が

で浮動小数点数の長い列である./prog.exeを実行したときの値

5 7 1.23456789が含まれていますプログラムに追加すると、倍精度値の長い列を含むain.inというファイルがあります。

コピーprog.exeと次ないことをbashスクリプト書く

作業ディレクトリに ain.in:

-Runs ./prog.exe

のすべてcombonationsのために

--m = 0,1、...、10

--n = 0,1、...、5

-A-=

ain.inファイルのすべての値が - これは、本質的にM、N上三重ネストされたループであり、ain.inはMの各組み合わせ-for

値、Nとain.in値以上:

から

input.in適切な入力ファイルを生成する - プログラムを実行し、SOMへの出力をリダイレクトe一時出力ファイル。 3つのネストされたループが average.inファイルを終了-whenこの一時出力ファイルから第37及び第51の値--extract

、ファイルにこれらを保存は

average.in と呼ばれる含むべきです浮動小数点値の長いリスト

-yourスクリプトは、平均値に含まれる値の平均を返します。

HINTSに:配列、AWK、出力方向、有用であろう、ここで


も、このを通じて読む時間を取っ誰にお願いします。 これは私の2番目のbashコーディングの割り当てで、まだそれを把握しようとしていて、より良い説明が非常に役に立ちます。再度、感謝します!

答えて

0

考えられるのは、さまざまな入力条件でprog.exeをテストするbashスクリプトを作成することです。これは、input.inを再作成し、何度もprog.exeを実行することを意味します。

0 0 <first line of ain.in> 

セカンドラン:

0 0 <second line of ain.in> 

あなたがprog.exeを実行するたびに、input.inは、例えば、

最初の実行を異なる3つの数字を含める必要があります。 。 。前回実行:

10 5 <last line of ain.in> 

seq and for loopsを使用してこれを実行できます。

はその後、あなたは体系的average.inですべての組み合わせ、use awk to compute the average of all the linesをテストした後、例えば、

最後
./prog.exe > tmp.out 
# extract line 37 and 51 and append to average.ln 
sed -n '37p; 51p; 51q' tmp.out >> average.ln 

を各実行の出力を保存する必要があります。

+1

おそらく 'tail |頭部。 –

+0

True;テールを置き換えた| 「頭」と「sed」。 – webb

2

これは明示的なループ

join -j9 <(join -j9 <(seq 0 10) <(seq 0 5)) ain.in | cut -d' ' -f2- 
+0

甘い!参加は存在していなかった。 – webb

0

ワンライナーは@karakfaに触発することなく、すべての入力の組み合わせを生成する1つの方法である:特定の行を選択するために、 `sed`または` awk`を使用

join -j9 <(join -j9 <(seq 0 10) <(seq 0 5)) ain.in | cut -d' ' -f2- | 
    sed "s/.*/echo & >input.in;./prog.exe>tmp.out; sed -n '37p;51p;51q' tmp.out/" | 
    sh | awk '{sum+=$1; n++} END {print sum/n}'