- ベストアンサー
Xwindowのプログラミング
XWindowのプログラミングで、キーボードで入力した数字3つを、a,b,cにそれぞれ代入し、ax^2+bx+cのグラフをXDrawPointで表示させたいのですが、なかなかうまくいきません。具体的にどのようなプログラムにすればよいのでしょうか?どなたかわかる方、教えて下さい。よろしくお願いします。
- みんなの回答 (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)各変数の定義部分
その他の回答 (3)
- koma1000nin
- ベストアンサー率30% (342/1133)
No.2の補足に対する回答。 初心者が良く失念するのですが、変数aの定義によって次のように記述しなければなりません。 1)int a ; → scanf("%d",&a); 2)float a ; → scanf("%f",&a); 3)double a ; → scanf("%lf",&a); 結果はいかがですか?
補足
int a;で%dにしているのですがやはり表示されません。 なにかほかに間違えやすいことはないでしょうか? x*xのグラフや、2*x*xのグラフはきちんと表示されるので、多分a*x*xという代入の時がおかいのではと考えているのですが…。 度々すみません。よろしくお願いします。
- koma1000nin
- ベストアンサー率30% (342/1133)
No1補足への回答です。 言語はおそらく「C言語」でしょう。しかもUNIXかLinuxで動かしているものと想像して、憶測での回答をします。 サンプルプログラムを参考にして、XWindowを開くところから正しくできていると思うのですが、問題は算出した点の座標がXWindowの定義範囲からはみだしているのではないかと思います。 ・XWindowの縦横サイズはどれほどですか? ・プロット座標の値は上記範囲に収まっていますか? ・負の値が出現したときはどのように処置していますか? X*Xの値は正数なので、「0≦x≦横サイズ」の範囲では縦サイズの許す限り表示していると思います。しかし、途中から表示されなくなっているでしょう。それと同じ現象だと思います。
補足
私も始め、プロット座標が収まっていないのでは、と考えたのですが、代入をするとa,b,c全ての値を1にしてもまったくグラフが表示されません。 私は、キーボードからの数値の読み込みを、 scanf("%d",&a); といった形にしているのですが、aに代入できているのでしょうか? 本当にすみません。よろしくお願いします。
- koma1000nin
- ベストアンサー率30% (342/1133)
うまく行かないというのは、 ・a,b,cへの代入ができない ・二次式の計算がうまく行かない ・関数XDrawPoint()の表示がうまく行かない のどれですか? また、プログラミング言語は何を使用していますか? ドローキャンバスは表示されていますか? なお"ax^2+bx+c"は"a*x*x+b*x+c"または"x*(a*x+b)+c"と記述するのですが、ここは大丈夫ですか?
補足
・a,b,cへの代入ができない ・二次式の計算がうまく行かない ・関数XDrawPoint()の表示がうまく行かない このどれにあたるのかはよくわからないのですが、 たんにx*xのグラフは表示されるのですが、aなどを入れると,a*x*xのグラフも表示されなくなります。 ax^2+bx+cはa*x*x+b*x+cと記述しています。 言語はすみません、これもよくわからず、Xwindowとしか言えません。 本当に困っています。よろしくお願いします。
お礼
完成できました!! 感謝で胸がいっぱいです。 本当にありがとうございました!