• ベストアンサー

Xwindowのプログラミング

XWindowのプログラミングで、キーボードで入力した数字3つを、a,b,cにそれぞれ代入し、ax^2+bx+cのグラフをXDrawPointで表示させたいのですが、なかなかうまくいきません。具体的にどのようなプログラムにすればよいのでしょうか?どなたかわかる方、教えて下さい。よろしくお願いします。

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

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

No.3の補足に対する回答。 そうすると、変数xもintとしておられると思います。 残っている疑問は数式の置き方で、このようにしていませんか?    ↓ XDrawPoint( …, …, …, x, a*x*x+b*x+c); そうであれば、このように変更するとどうでしょう。    ↓ y=a*x*x+b*x+c; XDrawPoint( …, …, …, x, y); なおintで計算すると、計算途中で桁あふれが生じる可能性がありますが、今は考えないことにします。 もうひとつはXDrawPoint関数を何らかの関数内で使用している場合、引数の受け渡しがうまく行っていないケースが考えられます。 (例) graph( …, …, …, x, y ) { … XDrawPoint( …, …, …, x, y); … } 下記の要所についてプログラミングを開示していただければ解決は早いと思うのですがどうでしょう。意外と初歩的な見落としかもしれません。 1)XDrawPoint関数を記述している前後   (関数内で記述しているならその関数全体) 2)a,b,c入力部分 3)各変数の定義部分

meguro1010
質問者

お礼

完成できました!! 感謝で胸がいっぱいです。 本当にありがとうございました!

その他の回答 (3)

回答No.3

No.2の補足に対する回答。 初心者が良く失念するのですが、変数aの定義によって次のように記述しなければなりません。 1)int a ; → scanf("%d",&a); 2)float a ; → scanf("%f",&a); 3)double a ; → scanf("%lf",&a); 結果はいかがですか?

meguro1010
質問者

補足

int a;で%dにしているのですがやはり表示されません。 なにかほかに間違えやすいことはないでしょうか? x*xのグラフや、2*x*xのグラフはきちんと表示されるので、多分a*x*xという代入の時がおかいのではと考えているのですが…。 度々すみません。よろしくお願いします。

回答No.2

No1補足への回答です。 言語はおそらく「C言語」でしょう。しかもUNIXかLinuxで動かしているものと想像して、憶測での回答をします。 サンプルプログラムを参考にして、XWindowを開くところから正しくできていると思うのですが、問題は算出した点の座標がXWindowの定義範囲からはみだしているのではないかと思います。 ・XWindowの縦横サイズはどれほどですか? ・プロット座標の値は上記範囲に収まっていますか? ・負の値が出現したときはどのように処置していますか? X*Xの値は正数なので、「0≦x≦横サイズ」の範囲では縦サイズの許す限り表示していると思います。しかし、途中から表示されなくなっているでしょう。それと同じ現象だと思います。

meguro1010
質問者

補足

私も始め、プロット座標が収まっていないのでは、と考えたのですが、代入をするとa,b,c全ての値を1にしてもまったくグラフが表示されません。 私は、キーボードからの数値の読み込みを、 scanf("%d",&a); といった形にしているのですが、aに代入できているのでしょうか? 本当にすみません。よろしくお願いします。

回答No.1

うまく行かないというのは、 ・a,b,cへの代入ができない ・二次式の計算がうまく行かない ・関数XDrawPoint()の表示がうまく行かない のどれですか? また、プログラミング言語は何を使用していますか? ドローキャンバスは表示されていますか? なお"ax^2+bx+c"は"a*x*x+b*x+c"または"x*(a*x+b)+c"と記述するのですが、ここは大丈夫ですか?

meguro1010
質問者

補足

・a,b,cへの代入ができない ・二次式の計算がうまく行かない ・関数XDrawPoint()の表示がうまく行かない このどれにあたるのかはよくわからないのですが、 たんにx*xのグラフは表示されるのですが、aなどを入れると,a*x*xのグラフも表示されなくなります。 ax^2+bx+cはa*x*x+b*x+cと記述しています。 言語はすみません、これもよくわからず、Xwindowとしか言えません。 本当に困っています。よろしくお願いします。