ページ 11

エラー解消されません、、、

Posted: 2017年5月12日(金) 02:35
by tennga
double onnsoku(double t)
{

double c;
c=331.5+0.6*t;

return c;
}

double hattyou(double c,double f)
{

double r;
r=c/f;

return r;
}

int main(void)
{

double f,c,t;
printf("気温と周波数を入力してください。\n");
scanf("%f %f",&t,&f);
c =onnsoku(t);

printf("波長は%lfです。\n",hattyou(c,f));

return 0;
}

こうなりました、、、
adai2.c: 関数 ‘main’ 内:
kadai2.c:23:3: 警告: 組み込み関数 ‘printf’ の互換性がない暗黙的な宣言です [デフォルトで有効]
printf("気温と周波数を入力してください。\n");
^
kadai2.c:24:3: 警告: 組み込み関数 ‘scanf’ の互換性がない暗黙的な宣言です [デフォルトで有効]
scanf("%f %f",&t,&f);
^

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 02:59
by box
printfとかscanfとかのプロトタイプ宣言が書いてあるはずの stdio.h をインクルードすれば、
くだんの警告は出なくなるかもしれません。

コード:

#include <stdio.h>

double onnsoku(double t)
{
    return 331.5 + 0.6 * t;
}

double hattyou(double c, double f)
{
    return c / f;
}

int main(void)
{
    double f, t;

    printf("気温と周波数を入力してください。\n");
    scanf("%lf %lf", &t, &f);
    printf("波長は%fです。\n", hattyou(onnsoku(t), f));
    return 0;
}

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 03:06
by tennga
ありがとうございます。
解消されましたが、結果がこうなりました
気温と周波数を入力してください。
17.0
40.0
波長はinfです。

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 03:13
by box
tennga さんが書きました: 解消されましたが、結果がこうなりました
気温と周波数を入力してください。
17.0
40.0
波長はinfです。
う~ん、自分のところでは、(計算式が正しければ)正しいと思われる8.5425が出ますけどね。

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 03:21
by tennga
プログラム同じように書いたんですが結果が、、、

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 08:55
by purin52002
横から失礼します。

tenngaさんはscanfで「%f」を使っていますが、boxさんは「%lf」を使っています。
変数がdouble型なら%lfにしないとちゃんと読み込んでくれないんじゃないでしょうか?

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 10:37
by tennga
lfにしたんですけど、全く何も変わらないんですよね…

Re: エラー解消されません、、、

Posted: 2017年5月12日(金) 12:03
by purin52002
原因がわからないのでご自身でデバッグしてみてください。
各関数で値を出力してみてください。

コード:

double onnsoku(double t)
{
    double c;
    c=331.5+0.6*t;
    printf("onsoku_c=%lf\n",c);//同じように各関数での変数の値を確認する。
    return c;
}
波長がinfとなるということは、hatyou関数がおかしい。
hatyou関数では割り算しかしてないから、引数がおかしい。
、、、のように悪さをしていそうな処理をさかのぼっていくと効率がいいかもしれません。