- ベストアンサー
C言語での消費税計算とお釣りの計算方法
- C言語を使用したプログラミング方法で、消費税を計算してお釣りの枚数を表示するプログラムについて質問です。
- 購入金額に消費税をかけて合計金額を算出し、100,000円から合計金額を引いた値をお釣りとして計算します。
- お釣りの枚数は、500円玉と50円玉の使用有無によって異なります。それぞれの使用有無に対応したプログラムを追加したいと考えています。どなたか教えて頂けますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず、それぞれの処理を独立させましょう。 今の書き方だと、 // 五十円玉の枚数を求める // turi = turi % 100; maisu = turi / 50; printf( "五十円 = %d\n",maisu ); の最初の行は、実は、100円玉の処理です。 これに対して、 // 五十円玉の枚数を求める // maisu = turi / 50; printf( "五十円 = %d\n",maisu ); turi = turi % 50; とすると、この3行は完全に50円玉の処理になります。 それぞれの処理が独立しましたから、 if (coin_50 == 1) { // 50円玉の処理 } のようにすれば、どの金種でも事由に禁止・許可できます。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
どの質問も同じようなタイトルを付けられていますが、 何となくもう一工夫あってもいいのではないか、などと思っています。 小学生が作文を書いたとき、「これは作文です」なんていうタイトルを付けるでしょうか? 「中身をぜひ読んでみたい!」と思わせるようなタイトルを付ける方が 得策ではないかなぁ、なんて思います。
- KEIS050162
- ベストアンサー率47% (890/1879)
ループを使わないで処理されている分、かなり力技な感じもしますが、それがかえってシンプルで分かり易いですね。 難しく考えずに、500円玉、50円玉で支払うかどうかのフラグをそれぞれ用意しておいて、 500円玉、50円玉の枚数をカウントする処理をスキップしてあげる、と共に、 そのすぐ下の100円玉、10円玉をカウントする処理もそのフラグによって turi = turi % 500 か turi = turi % 1000 にするかの条件文を入れてあげれば、良いかと思います。 もし、500円玉フラグが1ならば、 1000円の枚数計算後のお釣りから、500円玉の枚数を計算 500円玉の枚数計算後のお釣りから、100円玉の枚数を計算 そうでなければ、 1000円の枚数計算後のお釣りから、100円玉の枚数を計算 50円玉も同様ですね。 もう少しだけすっきりさせるなら、枚数計算した時にお釣りも計算させて、その次の処理に渡してあげる方がすっきりします。 1000円の枚数計算 お釣りの更新 もし、500円玉フラグが1ならば、 500円玉の枚数計算 と お釣りの更新 100円玉の枚数計算 お釣りの更新 もし、余力があれば、1000円、500円、100円…などお釣りの種類を配列化して、ループで計算する方法にも挑戦してみると、かなりすっきりすると思います。 ご参考に。