交通費を分配するための硬貨枚数を計算するプログラム

このQ&Aのポイント
  • プログラミングの問題です。以下のプログラムを作成してください。はじめに人数を入力させ、その後各人の交通費を入力すると、交通費を分配するために必要な硬貨の枚数を表示します。
  • 例えば、2人で530円と380円の場合は、五百円玉1枚、百円玉3枚、五十円玉1枚、十円玉6枚が必要となります。
  • 達成要件として、人数として0または負の数を入力された場合はエラーメッセージを表示し、0枚の硬貨は表示しないようにします。
回答を見る
  • ベストアンサー

プログラミングの問題です。

以下のプログラムを作成せよ はじめに人数を入力させる。 次にその人数分、交通費を入力、すると交通費を分配するためにはお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、五円、一円)に何枚用意する必要があるか表示してくれるプログラムを作成せよ。 例:二人で530円と380円の場合 はじめに「人数を入力してください:」と表示する。そこで「2」と入力する。 次に「1人目の交通費は?」と表示されるので「530」と入力、次に「2人目の交通費は?」と表示されるので「380」と入力したら 五百円玉 1 枚 百円玉 3 枚 五十円玉 1 枚 十円玉 6 枚 と表示し終了する。 達成要件: ●人数として0もしくは負の数を入力された場合は、「正しい人数を入力してください」と、表示し終了する ●枚数が0枚の場合は硬貨の種類は表示しない ●正しい硬貨と枚数が表示される

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

C++で書いてみた。 多分、お望みのものにはならないだろうけど。 二千円札も、記念硬貨も、容易に対応可能。 #include <iostream> struct kinshuType { char *name; int value; }; static struct kinshuType kinshuList[] = { {"一万円", 10000}, {"五千円", 5000}, {"千円", 1000}, {"五百円", 500}, {"百円", 100}, {"五十円", 50}, {"十円", 10}, {"五円", 5}, {"一円", 1} }; const int numOfKinshu = sizeof kinshuList / sizeof kinshuList[0]; struct personKinshuType { int total; int maisu[numOfKinshu]; personKinshuType() { total = 0; for (int i = 0; i < numOfKinshu; maisu[i++] = 0); } void operator += (personKinshuType another) { total += another.total; for(int i = 0; i < numOfKinshu; i++) maisu[i] += another.maisu[i]; } void print() { std::cout << "総計" << total << "円\n\n"; for (int i = 0; i < numOfKinshu; i++) if (maisu[i]) std::cout << kinshuList[i].name << " " << maisu[i] << " 枚\n"; } void calc() // 金種計算・金種表はグローバルのものを使う { int wk = total; for(int i = 0; i < numOfKinshu; i++) { maisu[i] = wk / kinshuList[i].value; wk %= kinshuList[i].value; } } }; int main() { personKinshuType forPerson; personKinshuType total; int numOfPerson; std::cout << "人数を入力してください: "; std::cin >> numOfPerson; if (numOfPerson < 1) { std::cout << "正しい人数を入力してください\n"; return -1; } for(int i = 0; i < numOfPerson; i++) { std::cout << (i + 1) << "人目の交通費は? "; std::cin >> forPerson.total; forPerson.calc(); total += forPerson; } total.print(); return 0; }

その他の回答 (6)

  • a_kwn
  • ベストアンサー率34% (8/23)
回答No.6

じゃ、このプログラムを実行すると、 壱万円記念硬貨玉 1枚 五千円記念硬貨玉 2枚 千円記念硬貨玉  3枚 五百円玉     4枚 百円玉      5枚 五十円玉     6枚 十円玉      7枚 五円玉      8枚 一円玉      9枚 と、表示されるんだ。 ちょっと楽しいな。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

確認したところ, 1000円・5000円・10000円のいずれも記念硬貨が存在します>#4. でも, やっぱり 2000円札は無視されるんだ....

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.4

>●正しい硬貨と枚数が表示される とありますが、 >一万円、五千円、千円 基本的にお札しかないんですけど。千円は記念硬貨か何かであったかもしれませんが…。

  • BuriBuri4
  • ベストアンサー率28% (150/525)
回答No.3

金種表でググれ http://www.geocities.jp/kenji_y0328/crenshu/index.html のR044あたりを適当に修正すれば楽なんじゃね

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

お金の種別が「一円」とか「十円」とかなのに, どうして「十円玉」などと表示できるのでしょうか?

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

まぁ、お約束ですが… 『どこまで、自分でできますか?』 『わからないところはどこですか?』 丸投げだと望む回答を得られる可能性は高くなかったりしますが。

関連するQ&A

  • 出していい1円玉の枚数

    コンビニで買い物をしたとき1円玉をたくさん出したら『1円玉は*枚までって決まっているんですよ~』と店員に言われたのですが、何枚までなんですか? 肝心の枚数が上手く聞き取れなくて、覚えていません((ォィ また、1円玉以外の硬貨も出せる枚数って決まっているんですか?

  • 本当に分からないので教えてください4

    問題6 金額と枚数を入力する. 硬貨,紙幣の合計が入力金額,合計枚数が入力枚数になる 場合を1つ見つけるプログラムを作成せよ. 使える硬貨,紙幣は 一万円,五千円,千円,五百円,百円,五十円,十円,五円,一円 とする. また,各硬貨,紙幣の枚数が求められたら,合計枚数と合計金額が 間違いないか確かめを行うプログラムを追加し,結果を表示せよ. <実行結果> 金額:1234 枚数:999 10000 : 0 5000 : 0 1000 : 0 500 : 0 100 : 0 50 : 0 10 : 0 5 : 55 1 : 944 金額 : 1219 枚数 : 999 <実行結果> 金額:1234567890 枚数:99999 存在しない <実行例3> 金額:1234567890 枚数:999999 10000 : 123357 5000 : 11 1000 : 2 500 : 21 100 : 3 50 : 601 10 : 4 5 : 6000 1 : 870000 金額 : 1234567890 枚数 : 999999

  • Fortran90 プログラミング

    プログラミング初心者です。Fortran90を使って、次の機能を持つプログラムを作成し、ソースと実行結果を示していただけませんか? 「半径rを入力すると、そのrを半径とする円の面積、球の体積、球の表面積を表示する。」

  • 文字式を利用して解く問題

    500円、100円、50円の3種類の硬貨があります。 これら3種類の硬貨については、 500円硬貨4枚の重さと50円硬貨7枚の重さは等しく、 100円硬貨5枚の重さと50円硬貨6枚の重さは等しくなります。 3種類の硬貨の中から何枚かを取り出し、 合計金額を1350円にします。50円硬貨1枚の重さをm(g)として、 次の問いに答えなさい。 (1)硬貨の重さの合計が最も軽くなる場合の硬貨の種類と その枚数を答えなさい。また、そのときの重さの合計を mを使った式で表しなさい。 (2)硬貨の重さの合計が、もっとも重い場合は、 もっとも軽い場合の何倍ですか。 という問題ですが、分からなくて困っています。 解説をお願いします。

  • 算数の問題、3年生にわかるように教えてください

    次の問題を解きたいのですが、解き方と解答をお願いします。小学校3年生のこどもに解説したいのですが、わたしだとできません。 問、毎日10円ずつ、貯金をします。10円硬貨が5枚たまると、50円硬貨1枚と交換します。また、50円硬貨が2枚たまると、100円硬貨1枚と交換します。さらに、100円硬貨が5枚たまると、500円硬貨1枚と交換することにします。たとえば、5日たつと、50円硬貨1枚になり、10日たつと、100円硬貨1枚になります。問1、123日たったとき、硬貨は全部で何枚ありますか?問2、枚数の合計が、2回目に3枚になるのは、何日たったときですか?問3、枚数の合計が、4回目に3枚になるのは、何日たったときですか?問4、貯金を始めてから30日までの間で、枚数の合計がいちばん多くなるのは、何日たったときですか。また、そのときの枚数の合計は何枚ですか?  以上です。アドバイスどうぞ、よろしくお願いします。

  • 両替のクイズです

    500円玉硬貨一枚を50円玉10円玉1円玉に両替したいのです。その際硬貨の合計枚数が100枚になるようにしてください。 この問題解けますか!?お知恵を拝借させてください。

  • 算数の問題の考え方 3年生に説明したい

    小学3年生に次の問題の解き方(考え方)と解答を教えてあげたいのですが、自分ではできません。 どうぞ、よろしくお願いします。問 毎日10円ずつ、貯金をします。10円硬貨が5まいたまると、50円硬貨1まいと交換します。また、50円硬貨が2まいたまると、100円硬貨1まいと交換します。さらに、100円硬貨が5まいたまると、500円硬貨1まいと交換します。 問1 枚数の合計が、はじめて5まいになるのは、何日たったときですか?問2 枚数の合計が3回目に5まいになるのは、何日たったときですか?問1はわかるのですが、問2がよくわかりません。数えて出すものなのか、計算式をつかって解答できるものなのか? 問3 貯金をはじめてから1年(365日)までの間で、枚数の合計がいちばん多くなるのは、何日たったときですか?また、そのときの枚数の合計は何枚ですか?この問題の考え方、こどもにどう説明してあげればわかりやすいでしょうか?アドバイス、よろしくお願いします。

  • お年玉の袋をできるだけたくさん作る、という問題

    硬貨をたくさん集めて1000円以上のお年玉袋をできるだけたくさん作りたい、という問題ですが、 枚数=a+b+c+d+e+f(枚) 合計=a+5b+10c+50d+100e+500f(円) と置くと、最大何袋できるでしょうか。

  • C言語を使用したプログラミング方法で質問です。

    以下のプログラミングで質問です。 以下のプログラミングは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; int coin_500; int coin_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 ); }

  • 夏休みの自由研究で硬貨の発行枚数について調べているのですが・・・。

    子どもが夏休みの自由研究で硬貨の発行枚数について調べています。 そこで質問なのですが、 (1)毎年の硬貨の発行枚数はどうやって決めているのでしょう? (2) 1円玉はS43年、     5円玉はs29~31年、      10円玉はs31年、    100玉はs37年、     にそれぞれ発行枚数0という年がありますが    何か特別な理由があるのでしょうか?          3) 2000年は発行枚数がどの貨幣も(新500円以外)急に少なく    なっているのはなぜ? どなたか教えて下さい。宜しくお願いいたします。    

専門家に質問してみよう