No.3ベストアンサー
- 回答日時:
#include <stdio.h>
main()
{
int a,b;
printf("0で終了\n");
for (;;) {
for (;;) {
printf("金額?");
a = 0;
if (scanf("%d",&a) != 1) break;
if ((a < 0) || (a > 499)) printf("1~499の");
else break;
}
if (a == 0) break;
b = a/100;
b += (a % 100) / 50;
b += (a % 50) / 10;
b += (a % 10) / 5;
b += a % 5;
printf("%d円は硬貨%d枚\n",a,b);
}
}
ANo.1は題意に従ってないので不正解。5円を忘れてるし。
この回答への補足
お答えありがとうございます。
今回質問させていただいた問題は
if文は使わずにできるようです。
やはり「1~499円までの金額を入力する」という事は無視できませんよね。
No.9
- 回答日時:
>今回質問させていただいた問題は
>if文は使わずにできるようです。
>やはり「1~499円までの金額を入力する」という事は無視できませんよね。
do~whileループの終了条件に金額の判定式を書けば、変な金額を入力された時はループを抜けないで入力を繰り返す、と言う書き方に変えれば、いくらでもif文を使わずに書けます。
しかし、どっかの誰かが「if文は使わずにできる」と発言したのは「硬貨の枚数を求める計算部分」だと思われます。
もし、出題者が「if文使わないで書いて」とかふざけた事を抜かすなら
#include <stdio.h>
main()
{
int a,b;
printf("金額?");
scanf("%d",&a);
b = a/100;
b += (a % 100) / 50;
b += (a % 50) / 10;
b += (a % 10) / 5;
b += a % 5;
printf("%d円は硬貨%d枚\n",a,b);
}
とかってプログラムでも提出して「変な金額を入力した時?そんなの知らない」とでも言い返してやりましょう。
この回答への補足
まとめて補足いたします。不明瞭な点が数々あった事をお詫びします。
問題には、「1~499円までの金額を入力し、必要な貨幣の枚数を求めるプログラム」としか書かれていないので、
さらに詳しい事は正直分かりません。
「if文を使わず…」と言ったのはその問題が、if文について説明される前(のページ)に書いてあるからです。
詳しい方のおかげで理解ができました。ありがとうございます。
No.8
- 回答日時:
うん。
僕も#7さんの意見に賛成で、「だと思う」と「です」だと全く方針が変わりますね。そこはハッキリすべき、だと思います。単に、最小限の貨幣の枚数求めるだけ、だったら実は至極簡単だ、と思いますが、「組み合わせ数」求めるとしたらかなりやっかいです。
ただし、「組み合わせ数求めよ」だったら、パズルっぽい問題として、割に「良く見かける」んですよ。ある意味有名な問題ですしね(だから、#4でその問題じゃないか、と書いたのです)。
どの道、「憶測で」プログラム書くのもアレですんで、もうちょっと問題調べて正確なトコロを投稿すべき、だと思います。
No.7
- 回答日時:
こんにちは。
“だと思う”ではなく“です”になるよう事前に確認してください。
違うとプログラム設計の根本が崩れますので。
まず、どのように処理すれば実現できるかについてご自身の考え
を聞かせてください。
そして、各処理を実現する為にどのような処理の流れをしていくかを
説明してください。
できれば作成したソースを載せていただけるとありがたいです。
また以下の用途にも対応できるのが理想です。
・紙幣に対応(一万円等)
・50円は使わない等の選択
・164円等の変則的な貨幣への対応
私の場合、以上の要望を含めた処理部分が20行程で作成できました。
努力されて作成されたコードを提示して頂ければ。あくまでサンプルとして
載せても構いませんが...
ご参考までに。
No.6
- 回答日時:
#5 に加えて
・使える金種の指定と
・「ちょうどその金額を作るのに必要」という条件
が必要です. じゃないと「500円玉 1枚」が常に最適になる.
この回答への補足
#5の方も含め、補足いたします。
たぶん、値の大きい貨幣から考えて、できるだけ貨幣の枚数を最小に。という事だと思います。
100円玉が何枚必要で、50円玉が何枚必要…という具合に、
値の小さい貨幣(1円,5円など)が少なく済むように。
という事だと思います。
No.4
- 回答日時:
>「1~499円までの金額を入力し、必要な貨幣の枚数を求める」
というプログラムはどういう風にすればいいでしょうか?
これ、直感的に言うと、おかしな問題なんですよね。
例えば。
499円だったら1円玉だったら499枚ですよね?当たり前、です。と言う事は「必要な貨幣の枚数を求める」のなら499枚。入力された数をそのまま返せば良い、って事になる。これっておかしくないですか?
つまり、任意の組み合わせで良ければ「どーにでもなる」んですよ。1円玉使えば全て解決です(笑)。
そうじゃなくって「組み合わせ数」求める問題なんじゃないか、と。じゃないと問題として成り立たないのでは、と思います。
No.2
- 回答日時:
そのものズバリを書いたらプログラムの学習にならないので、
・100で何回引けるか数えて余りを残す。引けた回数が100円玉の数。
・次に50,10,5と数値を変えて引ける回数を調べる(当然余りから)。
・余りが5未満になったら、それが1円玉の数。
自分の出来る範囲で、これをプログラム化してみましょう。
ifやwhileで条件式が書けて表示にprintfが分れば作れます。
No.1
- 回答日時:
100円、50円、10円、1円がそれぞれ何枚必要なのか
割り算の商をintの変数に代入する方法だと簡単かもしれません。
#include <stdio.h>
main()
{
int a = 499;
int b = a/100;
int c = (a-b*100)/50;
int d = (a-b*100-c*50)/10;
int e = (a-b*100-c*50-d*10)/1;
printf("%d %d %d %d %d\n",a,b,c,d,e);
}
この回答への補足
お答えありがとうございます。
このプログラムに「1~499円までの金額を入力する」という
部分を入れる事できますか?
たぶん入力する事は省略しても良いと思うのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 所得・給料・お小遣い キャッシュレス社会進行するなら1万円札って必要でしょうか? 1円、5円硬貨も嫌じゃないですか? 5 2023/06/28 16:33
- 数学 【 数A 場合の数 】 問題 10円硬貨2枚,50円硬貨3枚, 100円硬貨3枚の硬貨のうち一部また 2 2022/07/05 19:57
- 仮想通貨(暗号通貨) ディープラーニングなど AI が投資でも人間を抜くだろうと言われています 仮想通貨 AI を使用して 4 2023/02/25 22:05
- その他(社会・学校・職場) セルフイメージを高める21日間自分開発プログラム という自己啓発プログラムを売り込まれ 3 2022/03/30 16:52
- その他(メンタルヘルス) 申し込んで購入する価値あるでしょうか? 6 2022/03/31 17:12
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 確定申告 仮想通貨の課税について 1 2022/06/13 17:04
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
- 歴史学 兌換紙幣と正貨について。 兌換紙幣は正貨と同等。 例えば1万の兌換紙幣なら、1万の正貨と交換する必要 1 2022/11/11 19:56
- その他(ニュース・社会制度・災害) 賠償金請求の費用 3 2023/04/27 17:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
計算結果がlong型以上になる場...
-
プログラミングで二番目に大き...
-
c言語についての質問です。
-
C言語の二分法のプログラムにつ...
-
配列を使って魔方陣
-
for文の中にswitch文はいれられ...
-
C言語プログラムが理解できなくて…
-
while文を使った問題なのですが...
-
配列を関数に渡す方法
-
for文
-
scanfが実行されません
-
C言語階乗の総和を求める
-
for文について
-
C言語で電卓を作成する。
-
初心者です。for文、if文を使っ...
-
C言語 プログラム
-
このプログラムはどうすれば…
-
SIGALRMでプロセス終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10進数からN進数に変換するプロ...
-
構文エラー";"が型の前にあり...
-
#if 1 #elseの意味について
-
配列を使って魔方陣
-
for文の中にswitch文はいれられ...
-
getcの改行判定
-
配列を関数に渡す方法
-
C言語 プログラム
-
C言語階乗の総和を求める
-
while文について、c言語...
-
C言語 数字以外を入力させない...
-
C言語の二分法のプログラムにつ...
-
VHDLで、case文とwhen文のどち...
-
C言語で電卓を作成する。
-
scanfが実行されません
-
c言語プログラミングで1から100...
-
C言語プログラムが理解できなくて…
-
プログラム
-
プログラミングで二番目に大き...
-
C言語のプログラミング (基礎...
おすすめ情報