去年からc言語を始めた初心者の者です。
学校が休みの間に少しチャレンジしてみたくて、
2次関数を描写するプログラムに挑戦しているのですが、
なかなか検討もつかず、できない自分にあきれてます。
本やネットで検索しては、この2次関数をやっているの
ですが、まったくできません。
どうかお力をお貸ししていただけないでしょうか?
xの最大値、最小値および、yの最大値、最小値を入力し
二次関数のグラフを描写するプログラムです。
学校が始まるとまた忙しくなるので、こちらに気を取られている
暇がなくなり、どうしてもこの冬休み中にすっきりさせたい
のですが、どうでしょうか?
おねがいします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
とりあえず、サンプルみたいなのを作ってみました。
たたき台に使って下さい。
でも、まあ、「*」での描画は、2次関数の描画には向いてないと思う。範囲を広くしたら潰れてしまうし、狭くしたらホンの一部分しか表示できないし。
#include <stdio.h>
#include <math.h>
/* グラフィック画面座標サイズ */
#define X_V_SIZE 640
#define Y_V_SIZE 480
/* キャラクタ画面座標サイズ */
#define X_R_SIZE 80
#define Y_R_SIZE 25
/* キャラクタ画面をメモリ上に確保する:仮想的な画面 */
char Display[X_R_SIZE][Y_R_SIZE];
/* 仮想的スクリーンのクリアをする */
void ScreenCLEAR(void){
int i,j;
for(i=0;i<X_R_SIZE;i++)
for(j=0;j<Y_R_SIZE;j++)
Display[i][j]=' ';
}
void ScreenOUT(void){
int i,j;
for(i=0;i<Y_R_SIZE;i++)
for(j=0;j<X_R_SIZE;j++)
putchar(Display[j][i]);
}
/* (x,y)座標に点を打つ */
int g_point(int x, int y){
float wk_x,wk_y;
if(0>x || x>=X_V_SIZE || 0>y || y>=Y_V_SIZE)
return(-1);
wk_x = x;
wk_y = y;
x = wk_x / X_V_SIZE * X_R_SIZE;
y = wk_y / Y_V_SIZE * Y_R_SIZE;
Display[x][y] = '*';
return(0);
}
#if 0
2次関数のグラフを描く
cosのグラフを以下のように表示するプログラムを書け。(定義域は(0,4π))
g_pointが扱う座標は、グラフィック座標(x,y)=(0~639,0~479)
なので、xとyの変域をこの範囲に変更しなくちゃいけないよう
#endif
/* yの変域-10~10を0~480に変換する */
int convGY(double y){
int y_size = Y_V_SIZE/2;
return(y_size*(1.0-y/24.0));
}
/* xの変域を0~640から-10~10に変換する */
double convGX(int x){
return ((x - 320)/32.0);
}
int main(void){
int wx;
double x,y;
double a=0.2,b=-1.0,c=-2.0;/* f(x)=0.2x^2-x-2 */
ScreenCLEAR();
for(wx=0;wx<640;wx++){
x=convGX(wx);
y=a*x*x + b*x + c;
g_point(wx,convGY(y));
}
ScreenOUT();
return(0);
}
参考URL:http://okweb.jp/kotaeru.php3?qid=1099674
ご親切にサンプルを作っていただきありがうございました。
あと説明文が微妙ですいません。
その中で作ってもらえるとは思ってませんでした。
参考にさせていただきます。
ありがとうございました
No.4
- 回答日時:
二次関数のグラフを書くには最低限6つの数値が必要です。
・y = a*x*x + b*x + c における 各係数
・x軸の始点(最小値)と終点(最大値)の値
・計算するx軸の間隔
です。
この値をそれぞれ、a,b,c,xs,xe,st,という変数にscanf関数を使ってキー入力し、yの値を表示するプログラムを組んでみてください。
まず、ここまでできないことには、グラフは書けません。
No.3
- 回答日時:
回答者1の方と同意見です。
> どうかお力をお貸ししていただけないでしょうか?
どこまで出来ていて、何が分からないかを教えてください。例えば「任意の場所に*を表示する方法が分からない」とか。
現状のソースを掲示するのもいいですし。
> xの最大値、最小値および、yの最大値、最小値を入力し
> 二次関数のグラフを描写するプログラムです。
理解不能です。
No.2
- 回答日時:
> 整理するとまず2次関数のグラフを*で表示したいのです。
> これだけでサンプルは作れないでしょうか?
作れませんね。二次関数 y = ax^2 + bx + c の a,b,c および定義域を与えない限りグラフは描けません。
まずは数値を表示するところから始めてはいかがでしょうか? それができれば数値から'*'に変換すればいいのだから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- 数学 数学?算数の問題です どのような解答になりますか? 2 2022/04/22 04:46
- 数学 数学 2時間数に関わる問題について教えてください。 x≧1 y≧-1 2x+y=5 であるとき、xy 7 2022/10/29 10:57
- 政治 性被害を受けた回答者のうち、「どこ(だれ)にも相談しなかった」は47.3% 1 2022/06/18 11:34
- 数学 【 数I 2次関数 最大・最小 】 問題:関数y=x²+2x+c (-2≦x≦2)の最大値 が5であ 3 2022/06/19 08:41
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 malloc 関数を使って教えてください。 入出力例1 3 2022/07/21 09:36
- 数学 参考文献の探し方(数学) 1 2022/07/19 01:09
- 文学・小説 おすすめの中国史小説を教えてください おすすめの中国史小説を教えていただきたいです。 私は小野不由美 5 2022/10/15 12:42
- 高校 偏差値を上げれる限界 3 2023/07/04 01:19
- 大学受験 高二文系です。受験についてです。 英数の偏差値は57.5くらいで国理社50切るくらいです。浪人不可能 2 2023/02/20 22:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報