
以下のプログラミングで質問です。
以下のプログラミングはscanfで入力した値に消費税(1.05)して、10万円-出力結果(消費税含み)
の合計金額のお釣りの枚数を表示してます。この処理に以下のプログラムを追加したいのですが分かりません。どなたか教えて頂けますか?
五百円玉=1or0 入力 五十円玉=1or0 入力
1=有り 0=無し
1&1のとき500円玉、50円玉を使ってお釣りを支払う。
1&0のとき50円玉は使わない 0&1のとき500円玉は使わない
0&0のときどちらも使わない。
#include <stdio.h>
int main(void)
{
int i;
int buy;
int turi, maisu;
intcoin_500;
intcoin_50;
printf("購入金 = ");
scanf("%d",&i);
buy=i*1.05;
printf("支払額 = %.d\n",buy);
turi = (100000-buy);
printf("おつり = %.d\n",turi);
printf("五百円玉 = ");
scanf("%d",&coin_500);
printf("五十円玉 = ");
scanf("%d",&coin_50);
// 一万円札の枚数を求める //
maisu = turi / 10000;//おつりの金額に10000円で割った値
printf( "一万円 = %d\n",maisu );
// 千円札の枚数を求める //
turi = turi % 10000;//おつりの金額を10000円で割った余りの値
maisu = turi / 1000;//余りの値を1000で割った数
printf( " 千円 = %d\n",maisu );
// 五百円玉の枚数を求める //
turi = turi % 1000;
maisu = turi / 500;
printf( "五百円 = %d\n",maisu );
// 百円玉の枚数を求める //
turi = turi % 500;
maisu = turi / 100;
printf( " 百円 = %d\n",maisu );
// 五十円玉の枚数を求める //
turi = turi % 100;
maisu = turi / 50;
printf( "五十円 = %d\n",maisu );
// 十円玉の枚数を求める //
turi = turi % 50;
maisu = turi / 10;
printf( " 十円 = %d\n",maisu );
// 一円玉の枚数を求める //
maisu = turi % 10;
printf( " 一円 = %d\n",maisu );
}

No.2ベストアンサー
- 回答日時:
まず、それぞれの処理を独立させましょう。
今の書き方だと、
// 五十円玉の枚数を求める //
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円玉の処理
}
のようにすれば、どの金種でも事由に禁止・許可できます。
No.3
- 回答日時:
どの質問も同じようなタイトルを付けられていますが、
何となくもう一工夫あってもいいのではないか、などと思っています。
小学生が作文を書いたとき、「これは作文です」なんていうタイトルを付けるでしょうか?
「中身をぜひ読んでみたい!」と思わせるようなタイトルを付ける方が
得策ではないかなぁ、なんて思います。
No.1
- 回答日時:
ループを使わないで処理されている分、かなり力技な感じもしますが、それがかえってシンプルで分かり易いですね。
難しく考えずに、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円…などお釣りの種類を配列化して、ループで計算する方法にも挑戦してみると、かなりすっきりすると思います。
ご参考に。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで関数をつくる
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
関数電卓をc言語でつくりたいの...
-
三菱シーケンサー works2 の日...
-
チェックデジット計算できる関...
-
65536は2の何乗なのでしょうか?
-
加速度から変位の変換について
-
EXCELなどで「返す」という表現
-
アドオン利率を実質年率に変換
-
[ASP]日付と時間の比較
-
ファイルの開き方
-
XnViewにwebpを「いつも開く」...
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
Bluestacks内でダウンロードし...
-
VBAで仕様書は書きますか?
-
☆★大学院入試のアルゴリズムに...
-
.NETプログラムが初回起動が遅い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで関数をつくる
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
引き放し法による除算アルゴリ...
-
モジュラス103の計算とは何でし...
-
C言語についてです。 再帰を使...
-
スレッド処理からダイアログを...
-
階乗のマクロ
-
Perlで時間の計算
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
モジュロ
-
VBA入力フォームで労働時間の計...
-
三菱シーケンサー works2 の日...
-
Java 電卓の連続計算
-
パソコン
おすすめ情報