• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数による四則演算でのエラー)

関数による四則演算でのエラー

このQ&Aのポイント
  • 関数を使用した四則演算でエラーが発生しました。
  • インデントと括弧の数を確認しても解決しないため、原因がわかりません。
  • 後ろから演算させるように変更するとエラーが解消される可能性があります。

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

  • ベストアンサー
回答No.5

((3+4)*3)/7-2 1つの演算子に対して1組の()を適用する。 ((((3+4)*3)/7)-2) それぞれの()に対して演算子に応じた関数を適用する。 hiku(waru(kakeru(tasu(3+4)*3)/7)-2) 各式を引数のならびに置き換える。 hiku(waru(kakeru(tasu(3, 4), 3), 7), 2)

その他の回答 (5)

回答No.6

>printf("%d = 1\n",(tasu(3,4)kakeru(1,3)waru(21,7)hiku(3,2))); この行は意味不明だ。 3と4を足すのは「tasu(3,4)」で求まる。 求まった答えに3を掛けるなら「kakeru(求まった答え,3)」で求めないといけない。 「求まった答え」は「tasu(3,4)」と書けるのだから、結局「kakeru(tasu(3,4),3)」が「(3+4)*3」になる。 んで、(3+4)*3を7で割るなら「waru(kakeru(tasu(3,4),3),7)」になる。 あとは判りますね? それと、printfは printf("((3+4)*3)/7-2 = %d\n", 関数を使った正しい式 ); と書かないと、訳が判らない。 貴方が書いたprintfだと、表示結果が 1 = 1 になっちゃって、何を表示しているのか訳が判らない。

izupawapuro
質問者

お礼

>貴方が書いたprintfだと、表示結果が >1 = 1 >になっちゃって、何を表示しているのか訳が判らない。 これは((3+4)*3)/7-2 が1になればいいという問題で 1=1 になればOKということです。 実際に((3+4)*3)/7-2 は1です。これは関数電卓でやりました。

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.4

>>hiku(waru(kakeru(tasu(3,4),3),7),2); >念のため理解したいのですが >hikuを呼び出してwaruを呼び出してkakeruを呼び出してtasuから計算しているということでよろしいでしょうか? いやいや、それでは計算できません。 普通の計算と同じように()内が優先されます。 ではこう書きましょう。(変数の宣言はしませんね) a = tasu(3,4); ←a=7 b = kakeru(a,3); ←b=21 c = waru(b,7); ←c=3 d = hiku(c,2); ←d=1 ご理解いただけましたか? 本当は関数の中身として、不十分な所があったりします。 1.引数のどこかがゼロだったら 2.割り切れなかったら   などなど、予測される事にプログラムは対応する必要はあります。

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.3

>tasuのところにtasu(kakeru(1,3),4);とやるべきなのでしょうか。。。 近いですがちょっと違います。 関数の引数にすでに、あなたが頭で計算した答えが入っているのは何故何故? プログラムの意味がないと思いますよ。 hiku(waru(kakeru(tasu(3,4),3),7),2);

izupawapuro
質問者

お礼

プログラムの理解ができてなかったということですね... >hiku(waru(kakeru(tasu(3,4),3),7),2); この通りにしたらできました 後は理解が足りない...

izupawapuro
質問者

補足

>hiku(waru(kakeru(tasu(3,4),3),7),2); 念のため理解したいのですが hikuを呼び出してwaruを呼び出してkakeruを呼び出してtasuから計算しているということでよろしいでしょうか?

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>printf("%d = 1\n",(tasu(3,4)kakeru(1,3)waru(21,7)hiku(3,2))); なかなか斬新ですが……どういう動作を期待しているのでしょう? >expected ')' before 'kakeru' kakeruの前に閉じ括弧')'が必要と言われています。 式としてもおかしいので当然と言えば当然ですが。 というか…… 「((3+4)*3)/7-2 の計算をするようにプログラムを関数を使用し書け。」というのはそういう意味ではないと思いますけど……。 >インデントも)も同じ数にしているのですが インデントは関係ありませんし、括弧の対応が正しかったとしても書式としてヘンです。

izupawapuro
質問者

お礼

なるほど。つまり式の通りにプログラムするのでなく応用して、 この式を完成させろということでしょうか。 個の場合はインデント以前の問題だったんですね。。。ふむ

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

tasu(3,4); ←これが抜けています。 が、根本的に間違っているので、 最初からやり直した方が良いと思います。

izupawapuro
質問者

お礼

ご回答ありがとうございます。 しかしやり方が、、、うーん

izupawapuro
質問者

補足

printfでの関数は複数を1つの表示にするとき tasu(3,4); とやるとprintfで%dなのでtasuだけの関数しか使えないと思うのですがどうでしょう tasuのところにtasu(kakeru(1,3),4);とやるべきなのでしょうか。。。

関連するQ&A

専門家に質問してみよう