• ベストアンサー

算術演算子について

例えば、 100()3()27()23 とした時に、()に*/-+のどれか二つを入れて、 計算結果を出したい時、どうすればいいんでしょうか?ヒントを教えていただけないでしょうか?ちなみに、全て同じ演算子であってもいいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • V-bravo-U
  • ベストアンサー率51% (155/301)
回答No.3

 まず、解釈の確認ですけど >100()3()27()23 >とした時に、()に*/-+のどれか二つを入れて、計算結果を出したい時  これは「()を『*/-+』のいずれか2つに置き換えて計算結果を出す組み合わせ」 という解釈でよろしかったでしょうか?幾通りか解釈できそうですが、個人的には そう解釈したのでこれを前提に回答します。 #()があったまま「*/-+」を入れるのは文法エラーですから・・・。(^^;  ()を置き換えるのに「/*」と「*/」と「//」は当然候補からはずれます。それから、 定数が前後に続いていますので「++」と「--」も使えません。これらの理由は初級者 でも説明ができるはずです。わからなければ調べてください。っていうか、わからな ければデバッグで大いに苦労します。余力があれば「回答に対する補足」で軽く 説明してみてくださいな。(^^; また、演算子の構成から「+/」と「-/」もない です。  んで前後定数であれば「+*」と「-*」と「**」も使えません。この3つ理由は・・・ もう少しC言語の勉強をすればわかりますよ。キーワードは「ポインタ」です。  ということは残った組み合わせで計算結果を得ることができます。  余談ですが別質問で締め切られたhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1917724 ですが、別回答があります。C言語ではマクロを用いた記述で意図した書き方ができます。 #Microsoft社製Visual Stadio 2003にてコンパイルおよび動作確認済み #include <stdio.h> #define MARKS + /* ここがchar i = '+';の代わりになる */ void func() { int j; j = 100 MARKS 3; printf("%d\n",j); return; }  もしかしたら、これで「宿題」がかなり楽になったんじゃないかな?(^^;

その他の回答 (3)

  • uyama33
  • ベストアンサー率30% (137/450)
回答No.4

1.構文解析ルーチンと字句解析ルーチンをつくる。 2.演算子の入った文字列をつくる。 3.構文解析ルーチンに文字列をわたして計算させる。 1はコンパイラ作成の本に書いてあります。 構文解析ルーチンを作ってくれるソフトを コンパイラコンパイラとも言います。 エクセルで計算式を書いてやると 計算してくれる仕組みとおなじ ものを作るという考えです。

回答No.2

こんにちは、AEと申します。 4種類のキャラクタを、3つのカッコ内に2個ずつ配置していく全パターンを調べるためには、6桁の4進数で全てのパターンを調べることができると思います。 昔、学生時代に、  「9876543210の各数字の間に(+)(-)()=無   しを入れ合計が100になるようなパターンが何種類   あるかを求めるプログラムをFortranで作成せよ。   ただし、そのパターンの文字列をプリントする   ことも含め出来る限り短いステップ数で書く   こと。(行の接続は認めない)」 という課題が出たときがあります。 このプログラムを作る時には3進数を基本としてプログラムを作成したと記憶しています。 ※11行くらいでできたと思います。 これを応用すれば出来ると思いますよ。 頭の体操として面白いですね。 頑張ってください。 PS:  それにしても( )内に2個ずつって正しいですか?  (*/)というパターンはどういう計算をすればいいんでしょう?

  • oyaoya65
  • ベストアンサー率48% (846/1728)
回答No.1

●数値の前には符号(+や-)が付け符号付き数値にできます。 ●符号付数値同士の間には演算子の(*/-+)のいずれでもかけます。 以上のことからそれぞれの()の中に 「*-」、「*+」、「/-」、「/+」、「--」、「-+」、「+-」、「++」のいずれかを入れればいいかと思います。 2番目の記号は算術演算子というより符号と言った方が適当かも知れませんね。 なお、一部の計算機の算術式の記述法に「**」がべき乗を表す場合があります。つまり 「xのy乗」を「x**y」と書く場合です。 例) 100 - -3 + -27* +23 = -518 式の意味は 100 -(-3) + (-27)*(+23) と同じですね。

関連するQ&A

  • 算術演算子について

    Javaプログラミングを勉強し始めたばかりの初心者で、極々初歩的な質問でお恥ずかしいのですが 算術演算子について、教えてください。例えば、0 % 4 を実行すると結果は、0 となります。これは余りが無いので、 0 という結果になるのだろうと思います。次いで、1 % 4 を実行すると結果は 1 と表示されます。なぜ 1 となるのですか?(計算機で計算すると0.25です。)因みに 2 % 4 は 2 となります。 何方か、わかり易くご教授頂ければ、幸いです。

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

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

  • 算術演算子と連結演算子の優先順位について

    select 'aa' ||nvl2(comm,1,0) + nvl2(comm,1,0) || 'aaaa' from emp →ORA-01722: 数値が無効です。 というエラーが発生します。 nvl2(comm,1,0) + nvl2(comm,1,0)部分に括弧でおおうと、 つまり(nvl2(comm,1,0) + nvl2(comm,1,0))にするときちんと実行結果が出ます。 算術演算子のほうが連結演算子より優先順位が高いと習ったのですが実は逆ということでしょうか。 回答のほどよろしくお願い致します。

  • マスターキャム ブーリアン演算

    マスターキャムで  ブーリアン演算の 差をした時に 計算された 結果はみれますが、 もとのブーリアン演算に使った 二つのモデルを 表示するにはどのようにしたらいいのでしょうか? そのモデルを画面上で表示できたら その元ファイルと比べて ブーリアン演算の結果のファイルがそれとくらべて 大きい 小さいなど 体積の変化が確認できるので、 あっているかなどを  視覚的に確認 しやすいのですが、 どのようにしたら 計算された結果のソリッド形状と  計算の段階で読み込んでいるモデルの体積を うまく比較する事ができる でしょうか? 

    • 締切済み
    • CAM
  • エクセルの演算について

    エクセルで、=rounddown(25.4-25.3,1)をしたら結果が「0」になります。原因を調べたところ、=25.4-25.3の結果が0.099999・・となっていることが解りました。他の計算式でも、答えは明らかに0.1なのに演算結果は0.09999・・になるパターンがあるようです。 これを解消する方法を教えてください。

  • 算術演算子にて、整数での除算処理は商になる?

    JAVAのプログラミングを勉強しているのですが、JAVAの算術演算子にて、 参考書に「除算演算子は割り算を行うものだが、整数同士の割り算を用いると「商」を計算する」と書かれているのですが、これはどういう意味でしょうか? 整数同士の割り算をすると、小数点ではなく四捨五入をした整数値が出力されるのでしょうか?

    • ベストアンサー
    • Java
  • 算術シフトについて

    10010010(2)を 左に二桁の算術シフト演算について いくらやってもテキストの解答と合いません(10100100) どうやったらでるのでしょうか? また左右の論理シフト演算、右算術シフト演算 の結果はそれぞれどうなるのでしょうか? また

  • 演算結果はカタカナだとどう呼びますか?

    オペランド(operand)は被演算数です。 オペレータ(operator)は演算子です。 では、 ______________________________は演算結果です。 ↑ここに入るのは何がしっくりくるでしょうか? 例 2+3=5のとき 2と3がオペランドです。 +がオペレータです。 5は対応する呼び方があるとすると、なんと呼ぶとよいでしょうか。 =には、触れないでおきます。 ()のある計算式で、括弧中を塊としてみたときに、 式つまり、オペランドとオペレータの列に見えたり、 一つの演算結果に見えたりして、困ります。 例¬(true || false) が¬trueだったり、falseだったりします。 さいごの3つ目のfalseはオペランドでも、オペレータでもなく、演算結果だと思います。 キャルキュレーションみたいな名前があるのでしょうか?

  • VBAの演算について

    Rubyで余りの計算をすると (-12977 % 60) + 1 =44 ちなみにVBAでは (-12977 mod 60) +1 =18 になるのはなぜでしょうか。 Rubyの方の演算のが正しいと思うのですが、 VBAはなぜ間違えた演算をしてしまうのか検証できる方はいらっしゃいませんか。

    • ベストアンサー
    • Ruby
  • 算術・論理シフト演算はどんな時に使うのか?

    算術・論理シフト演算は何の為にあるのでしょうか?そもそもどんな時に使うのでしょうか? わかりやすく教えてください。できればわかりやすい「例え」で教えてくれたほうが幸いです。 よろしくお願いいたします。