0

課題を始めるためのヒントを得られることを願っています。次のように書かれています。

「後置記法で式を評価し、変数とマクロ文字列を使用した追加の計算もサポートする「dc」ユーティリティと同様に動作するプログラムを実装します。既存のユーティリティを自由に試して、そのマニュアルページを参照してください。割り当ては完全なユーティリティのサブセットのみをサポートします。 -- すべての数値は整数で、基数 10 のみを使用します。

-- 数値は 32 ビットの符号付き数値の範囲内であると想定される場合があります

-- すべてのレジスタ名は英数字になります (これらの dc のサブセットが許可されます)。

-- コマンド ライン オプションや引数は必要ありません。

-- 次のコマンドのみが必要です (マニュアルと同じ順序でリストされています) pnf + - * / % ^ cdrsl SL x > !> < !< = != q #

割り当てと既存のユーティリティのいくつかの重要な違い: -- すべての入力は標準入力のみを介して行われます (ただし、必ずしもキーボードではありません)。

-- レジスタ スタックは最初は空ではありませんが、無限のゼロで埋められます

-- マクロ呼び出しのネスト レベルに関係なく、q コマンドはプログラムを終了します。

-- 読みやすくするために、入力トークンの間に追加のスペースを入れることができます (スペースはコマンドでも、値でも、レジスタ名でもありません)"

正直なところ、どこから始めればよいかわかりません...どんな助けも大歓迎です、ありがとう。

4

2 に答える 2

1

これは課題であり、どこから始めればよいかわからないため、ヒントをいくつか示します。

  • stdin の読み取りから開始し、それをトークンに分割します
  • オペランドと結果を格納するスタックを実装する
  • +、-、*、/などのいくつかの操作を実装します
  • すべてを機能させる
  • 次に、不足している機能を 1 つずつ実装します。
于 2012-10-22T03:47:18.940 に答える
0

@Sergeは、開始方法の概要を説明していますが、何をするかについて少し不安に思っているようですdc。そのためのいくつかの指針を次に示します。

  • dc課題には、実際のプログラムで実験する必要があると書かれています。まだ行っていない場合は、これを行ってください。かなりのことを学ぶ必要があります。(これを行っていない場合は、なぜですか?)
  • のウィキペディア ページdcの基本操作セクションを確認してください。
  • dcマニュアルページを読んでください。最初は戸惑うかもしれませんが、もう一度読んで、実際のプログラムでそこに表示されていることを試してみてください。
  • 後置表記の全体的な考え方に混乱している場合は、ウィキペディアの逆ポーランド表記に関するページを参照してください。これは、同じものの別の名前です。

これにより、次の非常に単純な例を理解し、それらが何をするかを予測できるようになります。

  • 3 p
  • 3 4 * p
  • 3 4 5 + * p
  • 3 4 + 5 * p

あなたの課題はかなり先を行っていますが、これだけ実装できれば半分以上達成できます。

于 2012-10-22T16:41:12.907 に答える