質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

3249閲覧

水平投射に関するプログラミング

yuki0111

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/12/30 12:02

編集2017/12/30 15:48

プログラミング初心者です。
高さ h [m] の地点から速度 u0 [m/sec]で質点を水平に投げたとき, 質点が地上に到達するまで,0.1s毎の質点の位置 x, y ならびに速度成分 u, v を画面に出力させるプログラムを作成したいです。

ただし、
1.初期条件h、u0を入力する関数
2.x,y,u,vを計算する関数
の2つの関数を必ず作成しなければなりません。
ご教授のほど宜しくお願い致します。

すみません。下記が自分で作ったソースコードです。
回答してくれた方はとてもありがたいのいですが、
下記のもので間違っているところを指摘していただけたら幸いです。

double hscan(void){

double h;
printf("h?");
scanf("%lf",&h);

return h;
}

double u0scan(void){

double u0;
printf("u0?");
scanf("%lf",&u0);

return u0;
}

double vy(double vy1){

double vy2; vy2=vy1-9.8*0.1; vy1=vy1-9.8*0.1; return vy2;

}

double placey(double y,double vy2){

double y1; y1=y+vy2*0.1; y+=vy2*0.1; return y;

}

double vx(double vx1){

double vx2; vx2=vx1; return vx2;

}

double placex(double x,double vx1){

double x1; x1=x+vx1*0.1;

x+=vx1*0.1;

return x1;

}

int main(void){

double h,u0,x,y,u,v; h=hscan(); u0=u0scan(); do { u=vx(u0); x=placex(0,u0); v=vy(0); y=placey(h,0); } while(y>0); printf("u=%lf,v=%lf,x=%lf,y=%lf",u,v,x,y); return 0;

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2017/12/30 12:46

teratailの「ヘルプ」を見ると良いですよ。→https://teratail.com/help/avoid-asking
guest

回答1

0

ベストアンサー

1.初期条件h、u0を入力する関数

scanf使いますよね。h, u0をグローバル変数にして代入しておけばいいと思います。

2.x,y,u,vを計算する関数

普通は、微分方程式を使うのですが、今回の場合は手計算でやらせたいみたいですね。

structは習っていますか?習っているならそれを使ってください。
プロトタイプは、void calc(struct state *s, struct state *s0, double t);ですかね。

習っていない場合は、tを引数にする関数を作ります。
h, u0はグローバル変数なので引数にしなくていいです。
x, y, u, vをグローバル変数にして、関数内で代入すればいいと思います。

3.終了条件

y < 0.0が終了条件になります。

投稿2017/12/30 14:14

anndonut

総合スコア667

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anndonut

2017/12/31 03:42

コード見させて頂きました。まず、「C言語 グローバル変数」でググってみましょう。このコードにはグローバル変数が無いですよ。
anndonut

2017/12/31 03:43

あと、他の人が質問や回答を見る時に見やすくなるように、コードに該当する部分には「コード」というボタンがあるので、それを押して、コードを投稿して頂ければと思います。
yuki0111

2017/12/31 08:39

ありがとうございます! 無事解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問