![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
以下のプログラミングで質問です。
以下のプログラミングは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 );
}
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?8acaa2e)
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- その他(悩み相談・人生相談) バスで少なめに払って出てきてしまいました。 今日初めてバスに乗ったのですが、十円玉が不足していたので 8 2023/01/25 17:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
数値計算の高速化 (cos, sin, exp)
-
C言語を使用したプログラミング...
-
素数を自動的に作る
-
プログラムの発散
-
schemeです
-
VB6で 1-0.1*10 の計算結果が...
-
スライムがつぶれていく様子を...
-
チェックデジット計算できる関...
-
VC++で四捨五入
-
エクセルで特定のセルのみを任...
-
DLL(VC++で作った)で稼動中の...
-
C言語の課題で、1年の秒数を計...
-
電卓でmodの計算
-
VBAで一時的にオーバーフローを...
-
行き過ぎ量が計算値と実験した...
-
static double a[N][N + 1] = {...
-
VBA 九九 Do While
-
バッチファイルでウインドウを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
VBAで関数をつくる
-
モジュラス103の計算とは何でし...
-
バッチファイルでウインドウを...
-
EXCELなどで「返す」という表現
-
数値計算の高速化 (cos, sin, exp)
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
Excel VBAにてFFT
-
matlab計算での進捗状況を知りたい
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
-
アドオン利率を実質年率に変換
-
エクセルで特定のセルのみを任...
-
電卓でmodの計算
-
y=(x^2 +3x+1)^4を微分の定義を...
-
「評価」「評価値」という言葉...
おすすめ情報