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

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

ただいまの
回答率

88.93%

t秒後のロケットの速度vを求める関数

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,273

jo-jo

score 7

t秒後のロケットの速度を求める関数を作れという課題で、作って実行してみたところ、
05-3.exe は動作を停止しました。
問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はWindows から通知されます。
と、表示され実行ができません。
どこが間違っているのでしょうか?よろしくお願いします。

include<stdio.h>

float a = 0;
float velocity(float F, float m, int t){

float a =  F/m;
float v = a*t;

return v;
}

float main(void)
{
float m = 0;
float F = 0;
int t = 0;
printf("速度0で静止しているロケットに点火して打ち上げる。\n打ち上げからt秒後の速度V(t)を求める。\n");
printf("ロケットの質量 m=");
scanf("%f,&m");
printf("ロケットの推力 F=");
scanf("%f",&F);
printf("時間 t=");
scanf("%d",&t);

printf("打ち上げからt秒後の速度は%fです。",velocity(F,m,t));

}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • cateye

    2017/05/21 22:58

    環境(コンパイラなど)を教えてください。デバッグ時にはどこでエラーが出ますか?

    キャンセル

  • jo-jo

    2017/05/21 23:26

    Borland C++ Compiler 5.5 を使っています。コマンドプロンプトで値を入れて実行するとエラーが出ます。デバックのやり方がわからないです、、、

    キャンセル

回答 3

checkベストアンサー

0

1回目のscanfがおかしいですね。
他は大丈夫だと思います。

    scanf("%f,&m"); 
    ↓
    scanf("%f",&m); 

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

計算方法が正しいかについてはご本人に考えていただくとして、
文法上おかしな所を指摘してみました。

#include <stdio.h>

// velocity関数のプロトタイプ宣言    <= C++では無いとエラーになる
float velocity(float F, float m, int t);

// float a = 0;    <= velocity関数内でaが宣言されているのでこれは不要 
float velocity(float F, float m, int t)
{
    float a = F / m; 
    float v = a * t;

    return v; 
}

int main()    // <= main関数の戻り値はint, 引数を使わないなら空ける(voidは間違い) 
{ 
    float m = 0.0f;
    float F = 0.0f; 
    int t = 0; 

    printf("速度0で静止しているロケットに点火して打ち上げる。\n打ち上げからt秒後の速度V(t)を求める。\n");
    printf("ロケットの質量 m = "); 
    scanf("%f", &m);    // <= format(%f)と変数(&m)は別の引数
    ...(中略)

    printf("打ち上げからt秒後の速度は%fです。\n", velocity(F, m, t));
}

変数名はmとかtみたいに1文字だとわかりにくいのでmassとかsecとか意味のある単語に変える
特に理由が無ければfloatと%fじゃなくdoubleと%lfを使ったほうが良いかと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/21 23:42

    指摘ありがとうございます!!
    引数や戻り値の使い方がまだまだあやふやで基本的なことができていないので、指摘されたところを改善していきます。

    キャンセル

0

2回目以降のscanf()「scanf("%f",&F);、scanf("%d",&t)」は正常に読み込めていますか?←printf()などを挿入して、結果を表示してみましょうd^^

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/22 06:01

    scanf()は使い方が難しい関数です。私の場合は、fgets()→sscanf()を使います。

    キャンセル

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る