dポイントプレゼントキャンペーン実施中!

プログラミングの初心者です。
emacsを使って次のようなプログラムを作りたいのですがよくわかりません。
たとえば、a=2 b=3
を入力すると、
f(X)=(x+a)(x+b)=x^2+5x+6
と出力されるようなものです。
いろいろやってみてはいるのですが、「xの変数の型が宣言されていません」などと、(やってるつもりなんだけど)表示されたりしてうまくいきません。どなたか助けてください。

A 回答 (2件)

質問の意味がいまいちはっきりしませんが,おそらく,数式処理を行おうとしているのだと思います。



数式処理(変数に直接数値を入れて計算するものでなく,多項式の展開,因数分解,微分,不定積分などを式の形で求める処理)は基本的にまず,文字列として式を読み込みます。
したがって,おっしゃられるようなXの変数の型などは宣言すること自体へんな話です。
文字列として読み込んだ式を解析してXについての多項式に展開するという作業をします。
この問題の例はきわめて単純な例のひとつなので,これに限ってのプログラムはきわめて簡単だと思います。
この場合の多項式はC言語のprogramのなかではあくまでも文字列であって,式ではありません。
文字列の処理をするprogramであると言う認識が大切です。

「数式処理」で検索されるといろいろ情報が得られると思います。

参考URL:http://ja.wikipedia.org/wiki/%E6%95%B0%E5%BC%8F% …
    • good
    • 0
この回答へのお礼

なるほど!
ありがとうございます。
「関数」を扱っているのではないことは自分でもうすうす気づいていたのでが・・・。
おかげで知りたい情報を検索できそうです。

お礼日時:2007/07/29 14:40

int a, b;


/* a, b を入力 */
printf("f(X)=(x+a)(x+b)=x^2+%dx+%d\n", a+b, a*b);

この回答への補足

もうひとつ教えてもらってもいいですか??
この前は展開でしたが、今度は逆に因数分解をしたいと思います。
たとえばp、qを入力して、
うまく、p=a+b q = a*bとなるa,bが見つかったときにだけ
g(x)= x^2 + px + q
= (x+a)(x+b)
となるようにするにはどうしたらいいのでしょうか?

あと、たとえば、
x+a
という式に
a=-4
を代入すると、x + -4
と表示されます。
これは地道に、ifで場合わけしてaがマイナスの時には-aを出力する
’というようなことをしなければならないのでしょうか?

補足日時:2007/07/31 13:13
    • good
    • 0
この回答へのお礼

できました!!
ありがとうございます。

お礼日時:2007/07/29 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!