ページ 11

課題の助言をお願いしたいのですが

Posted: 2011年11月19日(土) 21:11
by アッシュ
C言語の課題をやっていてほぼ完成ってところまではコードを作れたんですが
実行したときの出力が上手くいかずに困っています。 
問題文と実行例、僕が書いたコードを貼るので助言していただければ幸いです、よろしくお願いします。
[問題文]
int型のメンバーであるdollar,cent,rateをもつ構造体moneyを定義する.キーボードで各々の値を入力させて構造体に格納した後,日本円に換算して画面に出力するプログラムを作成せよ.
[実行例]
dollar? 3
cent? 25
rate? 78
yen: 253.5

コード:

#include <stdio.h>

struct money{
	int dollar;
	int cent;
	int rate;
};

main()
{
	double yen(struct money);
	struct money money;

	printf("dollar? ");
	scanf("%d", &money.dollar);
	printf("cent? ");
	scanf("%d", &money.cent);
	printf("rate? ");
	scanf("%d", &money.rate);
	
	printf("yen: %.1lf\n", yen(money));
}

double yen(struct money money)
{
	return (double)((money.dollar * money.rate) + (money.cent * money.rate / 100));
}
これを実行すると
dollar? 3
cent? 25
rate? 78
yen: 253.0
となって小数第一位の数字が0になってしまって、うまく出力されないんです。どこに問題があるのか、どうすれば解決するのか助言をお願いします。

Re: 課題の助言をお願いしたいのですが

Posted: 2011年11月19日(土) 21:16
by みけCAT

コード:

(money.cent * money.rate / 100)

コード:

((double)money.cent * money.rate / 100)
としたらどうなりますか?

Re: 課題の助言をお願いしたいのですが

Posted: 2011年11月19日(土) 21:24
by アッシュ
>>みけCATさん
実行例通りに出力することが出来ました!
無事課題を終えることが出来そうです。素早い返答をしていただき助かりました、ありがとうございました。

Re: 課題の助言をお願いしたいのですが

Posted: 2011年11月19日(土) 21:28
by beatle
細かいことですが、正しいC言語のプログラムにするためにいくつか注意すべき点があります。

まず、関数のプロトタイプ宣言をしましょう。具体的には、main関数の定義より上に

コード:

double yen(struct money money);
という行を付け足します。(11/19 22:43 行末にセミコロンを追加)

mainの戻り値は必ずintにし、引数はvoidにしましょう。

コード:

int main(void)
入門書で、たまにmain関数の戻り値にintを書かないものがありますが、それは正しくありません。

Re: 課題の助言をお願いしたいのですが

Posted: 2011年11月19日(土) 22:22
by アッシュ
ご指摘ありがとうございます、今後プログラムを作る際に心がけていきます。
わざわざありがとうございました