- ベストアンサー
キーボードから数式の入力を受け付けるには
ものすごく初歩的な質問で申し訳ないのですが、 検索のかけ方が悪いのか、なかなか情報が見つからないのでみなさんにお聞きします。 たとえば、#defineを使うのではなく、 scanfなどでキーボードから「y=2*x」といった式を読み込むことは可能でしょうか? 後からxの値をキーボードで入れて、計算させて「y=4」とか表示させたりしたいのです。 理由は、xの値が常に変わるのと、場合によっては式がまるごと変わるので、 #defineで式を固定してしまうと、その部分を書き直さなければならなくなるので… Cを始めたばっかりで、ホントによくわかっていないので、トンチンカンなこと言ってたらごめんなさい。 どうかご存知の方、ぜひご教授お願いしますm(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まともにやろうとすると難しいです。"2*x"のような文字列を読み込んで解析しなければなりません。Cを始めたばかりということですが、他のプログラミング言語の経験はありますか? プログラミング自体が始めてだと厳しいかもしれません。 >xの値が常に変わるのと、場合によっては式がまるごと変わるので これって、仕事や研究で使用するプログラムなのでしょうか? もし使う計算式が決まっているのであれば、使用する式の番号を指定するようなプログラムにしてはどうでしょうか。
その他の回答 (2)
C 言語では、コンパイル時に、文字列としての式をコンピュータが理解できる処理形式へ変換します。 なので、ご自身で文字列としての入力された式を解析して計算する関数を書かないと出来ません。 が、、、結構面倒です。 初心者にはちょっとハードルは高いかも知れませんけど、式の形を限定すれば(例えば a <演算子> b の様なシンプルな形式のみにするとか)何とかなるでしょう。 では。
お礼
回答ありがとうございます。 あああ、ご存知の方でさえ面倒ということでは、私では到底無理っぽいですね(>_<) やはり入門者が無茶なこと考えたらダメですね(;^_^A 課題の期限がせまっているので、今回チャレンジするのは厳しいですが、 締め切りが終わってからゆっくり、簡単な式で勉強していってみたいと思います。
- osamuy
- ベストアンサー率42% (1231/2878)
scanf/fgetsなどで、文字列として読み込み、その文字列を解析・評価するという形で可能です。 詳しくは、数式処理かコンパイラ構成論についての本を御覧になる良いでしょう。 性能的にきびしくなかったら、てっとりばやく、Perlあたりで書くという手もあります。
お礼
回答ありがとうございます。 文字列を解析…ですか…まだまだ私にはハードルが高そうです(^^ゞ Cはおろかプログラミング自体を始めたばっかりなので、 これからの勉強のきっかけにしてみたいと思います。 本当はCGIスクリプトとかをつくってみたいので、Perlも勉強したいのですが、 学校の課題がC言語なので、後回し状態なんです(ToT) 初心者にはツライ…
お礼
回答ありがとうございます。 お、おっしゃるとおりプログラミング自体が初めてなので、無理そうです(^^ゞ ほんと、すいません… しかし、「使う計算式が決まっているのであれば、使用する式の番号を指定する」 というのには「なるほど!」と思っちゃいました。 今後勉強していく上でヒントにさせていただきます。
補足
今回の質問のきっかけは、 学校の課題でニュートン法を処理するプログラムを書くことになったためなんです。 課題となっている関数が3つほどあって、 それがキーボードから入力できたらいいなあ、と思ったのです。 (課題の上では全然必須ではなくて、 先生も「#defineを使って関数ごとにスクリプトを書いてもかまわない」と おっしゃっているんですが) ↑スクリプトを書くのを1つで済ませたかったというのも、あります(^^ゞ もし、それが私でもできる方法であれば…と思って質問させていただきました。 しかし、やっぱ高望みはダメですね。着実に勉強していきます。 回答してくださったみなさま、ありがとうございましたm(_ _)m