• 締切済み

プログラム(演算)

プログラミング初心者です。 「1+3*(2+4)」などのように1桁の正整数と加算、乗算、カッコからなる式がキーボードから入力されるとき、その計算結果を画面に表示するプログラムを作成せよ。ただし、再帰を使用しないこと。 というのが問題なのですが、手の付け方がまったく思いつきません。分かる方がいればヒントをくだされば幸いです。

みんなの回答

  • R_Earl
  • ベストアンサー率55% (473/849)
回答No.3

何かの課題でしょうか? 教員の方が何かヒントをくれませんでしたか(参考図書、参考URL等)? 提出期限はいつ頃まででしょうか? 課題か何かだとして、ノーヒントでこの課題を与えられると少々難しいかもしれません。 大まかな流れとしては、 (1) キーボードの入力を、文字用の配列に格納 (2) 文字用の配列に格納された文字列を字句解析 (3) 逆ポーランド記法に直す (4) 計算をする という風になると思います(この方法でなくてもできるかもしれません)。 課題のプログラムは結局電卓なので、「電卓 プログラム」等のキーワードで検索すれば 何かしらのヒントを得られるかもしれません。 あわせて、「字句」「トークン」「スタック」「逆ポーランド記法」についても調べてみると良いかもしれません。

hoge29
質問者

お礼

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

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2
hoge29
質問者

補足

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

  • Nitar
  • ベストアンサー率23% (5/21)
回答No.1

まず環境を教えてください 言語: OS: コンパイラ: とりあえずこの三つです。 あとその言語をどこまで勉強したかもお願いします。それから学習のどの過程でその問題が出てきたかも知りたいです。 昔Cで、一度逆ポーランド記法に変換してからスタックに積んで片付けるというのをやったことがありますが・・・。 いずれにしてもPerlのevalのような関数を使うのでなければ、まず、入力された文字列をトークンに分けることが必要です。

hoge29
質問者

お礼

 回答ありがとうございます。 教育用のPascalという言語で、OSはLINUX?です。コンパイラはよくわかりません。一応半年ほど勉強して、配列をやり終えたくらいのレベルです。 >学習のどの過程でその問題が出てきたかも知りたいです それで、今再帰の演習の中で課題としてこの問題が出されました。再起は使用できませんが・・・。

関連するQ&A

  • プログラム

    「一行に書かれた式(文字列)の値を求めるプログラム」 少なくとも2つの2桁までの正の整数値の加減乗除ができること。 このプログラムのやりかたがわかりません、教えてください。。

  • 簡単な乗除の計算のプログラムなのですが・・・

    簡単なプログラムなのですが学校の課題で出て分からなかったので質問します。 整数x,yがx=10、y=4の時、x*y/4とx/4*yの計算結果が異なる理由を述べなさい。 という問題です。 x/4*yのx/4の計算で2.5の小数点以下が切り捨てられて2となりそこにyを乗算したからという予想を立てましたがだめでした。 どうしてなのか教えてください。お願いします。 私は今年から大学でプログラミングを習い始めた初心者です。

  • Javascriptで算術演算子を作っているのですがわかりません・・・

    あの、JavaScriptの課題で、算術演算子つくり、加算、減算、乗算、除算、整数の除算の商と余りが求めれるように、a bにそれぞれ数値を代入して計算開始というのを作りました。それで、数値以外のたとえば、アルファベットなどを代入した場合、それは数値ではありません、数値を代入してくださいというような数値の入力を促すようになるようにしたいのですが、エラーばかりでます。どのようにソースを打ったら良いのかさっぱりわかりません。教えてください!!よろしくおねがいします。

  • エクセル2010で2進数の計算をするには

    エクセル2010を使って2進数の乗算と加算を複数回行い、最後にそれぞれの答えをすべて加算したいのですが、こういうことは可能でしょうか。 また、最後の答えをすべて加算したときの桁数は100桁程度になると思います。 (できれば10進数をキーボードから入力すれば2進数の変換から複数回の乗算と加算などを自動で計算できれば大変ありがたいのですが) 書店で参考書を探したのですが、10進数→2進数、2進数→10進数の変換については載っているのですが、2進数の計算についてはどの本にも記述がありませんでした。 どうぞよろしくお願いします。

  • スマートフォンのプログラムについて教えてください

    私は趣味で設計をしたデジタル回路をプログラム化してアンドロイドのスマートフォン上で動作させたいと思っているのですがプログラムは素人でまったくわかりません。 プログラムはC言語を勉強すればよいのでしょうか。 また、AND,OR,NOT,ExORなどのロジック回路やフリップフロップ、シフトレジスタ、半加算器、全加算器、乗算器などを接続して作ったデジタル回路をスマートフォンのOS上で動作するようにしたいのですが、どのようにプログラミングすればよいのか参考書がないので困っています。 書店で探しても事務系のプログラムの参考書はいろいろありましたが、技術系のものはありませんでした。 このような参考書は存在しないのでしょうか。 もし、存在していればプログラミングの初心者でも理解できるような参考書を紹介していただけないでしょうか。 よろしくお願いします。

  • 反転のプログラムについて

    プログラムの質問で「入力された正の整数において、桁の順序を反転したプログラムを作れ。321→123、32100→123など。0の時は0と表示させろ」という問題がどうしてもわかりません。講師の人が10で割ればいいと言ってるんですがいまいちわかっていません。使ってるのはVisual Stadio 2005のC++です。教えてもらえませんか?ついでに 「M以上N以下の正の整数で、素数であるものを小さい方から表示するプログラムを作れ」も教えてもらえれば幸いです。アドバイスでも結構ですのでよろしくお願いします

  • 下記に記すプログラムを解いてください。

    Σ1/(i + k) の計算 [問題]正の整数 n を入力し,次の式の値を計算し,出力するプログラムを書け. 1/1 + 1/2 + 1/3 + ・・・ + 1/n 上記の問題が解けませんので解答お願いします。 上記の問題をdouble形式でお願いします。 上記の問題をintmain()形式でお願いします。

  • java for文プログラムについて

    java for文プログラムについて javaのfor文のプログラムにて 2つの数値をキーボード入力し入力値を+入力値とやっていきたいプログラムを組みたいのですがどんなプログラミングを行えばいいのでしょうか。 例えば入力が15 もうひとつの入力が20だとすれば15+16+17+18+19+20=105という計算を行いたいです プログラミング環境はeclipseです 分かる方教えてください。

  • 閏年が何個含まれるか求めるプログラム

    3桁、あるいは4桁の整数を10個程度入力して、これらの中 に閏年が何個含まれるか求めるプログラムの書き方を教え てください。  お願いします。

  • プログラム (BASIC) 教えてください

    コンピュータが 3桁の整数(100~999) n をランダムに生成。 「3桁の整数(100~999) n を当ててください」と表示。 解答者はキーボードで整数 x を入力。 x > n なら「もっと小さい数です.再入力してください」と表示してゲームを継続( 3. に戻り,x を再入力)、 x < n なら「もっと大きい数です.再入力してください」と表示してゲームを継続( 3. に戻り,x を再入力)、 x = n となったら ループを抜ける。 「正解です」と表示して,ゲーム終了。 100 RANDOMIZE 110 PRINT "3桁の整数(100~999) n を当ててください" 120 LET n=100+INT (900*RND) 130 DO 140 INPUT x 150 IF x=n THEN EXIT DO 160 IF x>n THEN 170 PRINT "もっと小さい数です.再入力してください" 180 ELSEIF x<n THEN 190 PRINT "もっと大きい数です.再入力してください" 200 END IF 210 LOOP 220 PRINT "正解です" 230 END このプログラムをIF、END IFを一回のみ使うプログラムに変える方法を教えてください。