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

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

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

#1

投稿記事 by アッシュ » 13年前

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になってしまって、うまく出力されないんです。どこに問題があるのか、どうすれば解決するのか助言をお願いします。

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

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

#2

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

コード:

(money.cent * money.rate / 100)

コード:

((double)money.cent * money.rate / 100)
としたらどうなりますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アッシュ

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

#3

投稿記事 by アッシュ » 13年前

>>みけCATさん
実行例通りに出力することが出来ました!
無事課題を終えることが出来そうです。素早い返答をしていただき助かりました、ありがとうございました。

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

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

#4

投稿記事 by beatle » 13年前

細かいことですが、正しいC言語のプログラムにするためにいくつか注意すべき点があります。

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

コード:

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

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

コード:

int main(void)
入門書で、たまにmain関数の戻り値にintを書かないものがありますが、それは正しくありません。
最後に編集したユーザー beatle on 2011年11月19日(土) 22:43 [ 編集 1 回目 ]

アッシュ

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

#5

投稿記事 by アッシュ » 13年前

ご指摘ありがとうございます、今後プログラムを作る際に心がけていきます。
わざわざありがとうございました

閉鎖

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