何処が間違っているのか教えてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
saori

何処が間違っているのか教えてください。

#1

投稿記事 by saori » 9年前

ポインタを利用して、3つの入力された値の合計と平均を出したいのですが、何度してもエラーしか出てこず困っています。
教えてください。

コード:

#include<stdio.h>
double w(double a, double b, double c, double *goukei, double *ave);

int main(void)
{
	double a, b, c, goukei, heikin, d;

	printf("a:");
	scanf("%f", &a);
	printf("b:");
	scanf("%f", &b);
	printf("c:");
	scanf("%f", &c);

	goukei = 0;
	heikin = 0;

	d = w(a, b, c, &goukei, &heikin);

	printf("\na+b+c:%f\n", goukei);
	printf("(a+b+c)/3:%f\n", heikin);

	return 0;
}

double w(double x, double y, double z, double *goukei, double *ave)
{
	*goukei = x + y + z;
	*ave = (x + y + z) / 3;

	printf("\n合計:%f\n", *goukei);
	printf("平均:%f\n", *ave);

	return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 何処が間違っているのか教えてください。

#2

投稿記事 by みけCAT » 9年前

scanfでdouble型の値を読み込む時は、%fを使ってはいけません。%lfを使ってください。
printfでdouble型の値を出力する時は、%fを使うのが正しいです。
きちんと読み込めたかどうかを、scanfの戻り値で確認するようにすると、さらに良いでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 14年前

Re: 何処が間違っているのか教えてください。

#3

投稿記事 by box » 9年前

saori さんが書きました:ポインタを利用して、3つの入力された値の合計と平均を出したいのですが、何度してもエラーしか出てこず困っています。
どんなエラーが出ますか?教えてください。
saori さんが書きました:

コード:

	scanf("%f", &a);
	scanf("%f", &b);
	scanf("%f", &c);
%f
のかわりに
%lf
を使うとうまくいくのではないでしょうか。

ところで、
saori さんが書きました:

コード:

double w(double a, double b, double c, double *goukei, double *ave);
w関数の戻り値の型がdoubleである必然性はないように思います。
void
でいいのではないでしょうか。
saori さんが書きました:

コード:

	double a, b, c, goukei, heikin, d;
	d = w(a, b, c, &goukei, &heikin);
変数dの定義をサクッと消して(どうせ後ろの方で使ってないし)、
w関数の実行部分は

コード:

	w(a, b, c, &goukei, &heikin);
でいいはずです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る