こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

プログラム(演算)

プログラミング初心者です。

「1+3*(2+4)」などのように1桁の正整数と加算、乗算、カッコからなる式がキーボードから入力されるとき、その計算結果を画面に表示するプログラムを作成せよ。ただし、再帰を使用しないこと。


というのが問題なのですが、手の付け方がまったく思いつきません。分かる方がいればヒントをくだされば幸いです。

投稿日時 - 2008-10-07 16:35:21

QNo.4384222

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

何かの課題でしょうか?
教員の方が何かヒントをくれませんでしたか(参考図書、参考URL等)?
提出期限はいつ頃まででしょうか?
課題か何かだとして、ノーヒントでこの課題を与えられると少々難しいかもしれません。

大まかな流れとしては、

(1) キーボードの入力を、文字用の配列に格納
(2) 文字用の配列に格納された文字列を字句解析
(3) 逆ポーランド記法に直す
(4) 計算をする

という風になると思います(この方法でなくてもできるかもしれません)。

課題のプログラムは結局電卓なので、「電卓 プログラム」等のキーワードで検索すれば
何かしらのヒントを得られるかもしれません。

あわせて、「字句」「トークン」「スタック」「逆ポーランド記法」についても調べてみると良いかもしれません。

投稿日時 - 2008-10-07 17:19:54

お礼

 一度、再帰の講義を受けた後に前期の復習(配列まで)、応用という形で、演習4回分=2、3週間くらいの期限で教授に出された課題です。
 皆さんにいただいた回答を見ていると、逆ポーランド記法というのが、一つのキーワードみたいですね。とりあえずは、info22さんの参考URLをみながらR_Earlさんの流れの順番で考えて行きたいと思います。

投稿日時 - 2008-10-09 12:32:25

ANo.2

補足

 参考URLの紹介ありがとうございます。これを元に取り掛かっていこうと思います

投稿日時 - 2008-10-09 12:24:55

ANo.1

まず環境を教えてください
言語:
OS:
コンパイラ:

とりあえずこの三つです。
あとその言語をどこまで勉強したかもお願いします。それから学習のどの過程でその問題が出てきたかも知りたいです。

昔Cで、一度逆ポーランド記法に変換してからスタックに積んで片付けるというのをやったことがありますが・・・。
いずれにしてもPerlのevalのような関数を使うのでなければ、まず、入力された文字列をトークンに分けることが必要です。

投稿日時 - 2008-10-07 17:04:54

お礼

 回答ありがとうございます。
教育用のPascalという言語で、OSはLINUX?です。コンパイラはよくわかりません。一応半年ほど勉強して、配列をやり終えたくらいのレベルです。

>学習のどの過程でその問題が出てきたかも知りたいです
それで、今再帰の演習の中で課題としてこの問題が出されました。再起は使用できませんが・・・。

投稿日時 - 2008-10-09 12:24:21

あなたにオススメの質問