0

いくつかのコードを書くという使命に取り掛かる前に、誰かが次のことが可能である (または少なくともかなり簡単である) ことを確認できることを望んでいました。

9 列 (1 つのスペースで区切られている) と多くの行にある数字を含むファイルを読みたいと思っています。2 番目の列は、大きいものから小さいものへと番号順に並べられています。この 2 番目の列に指定された数値を下回るすべての行を破棄してから、新しいファイルを生成し、この規則に適合する上位の行だけを出力したいと考えています。

さらに、他の 2 つの列の間の計算の結果である 10 番目の列を追加したいと思います。

これは配列を使用して行われますか?

よろしくお願いします。

4

2 に答える 2

1

これはawkでは些細なことです。2番目の列に必要な最小値を含むシェル変数$Nであり、列10を列3と5の合計にしたいとします。

awk '$2 > '$N'{ $10 = $3 + $5 }1' input-file

これにより、すべての行が出力されます。出力をヘッドにパイプして出力する行数を減らすか、awkスクリプトにカウンターを追加します。これを行うためにCコードを書くと、Cを学ぶのに役立つ演習でない限り、時間を無駄にすることになります。

一方、Cでは非常に簡単です。簡単にするために、列が2つしかない場合を想定します。

int c[2];
do { 
  rc = scanf( "%d %d", c, c + 1 );
  if( c[1] > N && rc == 2 )
    printf( "%d %d %d", c[0], c[1], c[0] + c[1] );
} while( rc > 0 );
于 2012-08-28T16:00:15.097 に答える
0

最も単純なアプローチは、おそらくファイル内の各列を配列に変換し、そこから説明するように操作することです。

ファイルには整数ではなく文字が格納されることに注意してください。格納する内容に応じて配列を割り当てるようにしてください。

文字から整数への変換について説明しているこの質問も役立つ場合があります。

于 2012-08-28T16:01:04.863 に答える