• 締切済み

C言語プログラミングで、多項式の展開をする

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

みんなの回答

  • chiezo2005
  • ベストアンサー率41% (634/1537)
回答No.2

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

参考URL:
http://ja.wikipedia.org/wiki/%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
biscuit-19
質問者

お礼

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

回答No.1

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

biscuit-19
質問者

お礼

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

biscuit-19
質問者

補足

もうひとつ教えてもらってもいいですか?? この前は展開でしたが、今度は逆に因数分解をしたいと思います。 たとえば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を出力する ’というようなことをしなければならないのでしょうか?

関連するQ&A