- 締切済み
プログラムの修正お願いします。
レンタルビデオを借りる。 1本150円。 5本借りると100円引き。 5本を越えると5本目以降は1本100円。 どこが間違ってるでしょうか?? 教えてください。 #include<stdio.h> void main(void) { int i,money; printf("借りる本数を入力 ---> "); scanf("%d",&i); if(i < 5){ money = i * 150; } else if(i == 5){ money = money - 100; } else{ money = money + (i-5)*100; } printf("合計金額は%d円です。\n",money); }
- みんなの回答 (25)
- 専門家の回答
みんなの回答
- Mizyu
- ベストアンサー率41% (245/593)
#2です。失礼しました。間違いです。 × money = (i*150) + (i-5)*100; ○ money = (4*150) + (i-4)*100;
- arukamun
- ベストアンサー率35% (842/2394)
まちがっているのは、if-else文のところでのmoneyの扱い方ですね。 else ifやelseで式の右辺にmoneyがありますが、この変数には値が設定されていません。 また、5本目以降は1本100円ではなくて、6本目以降は1本100円ですよね。 #include<stdio.h> void main(void) { int i,money; printf("借りる本数を入力 ---> "); scanf("%d",&i); if(i < 5){ money = i * 150; } else if(i == 5){ money = 5*150 - 100; } else{ money = 5*150 - 100 + (i-5)*100; } printf("合計金額は%d円です。\n",money); } とりあえず、解りやすいようにしましたが、手計算出来る部分は出来るだけ計算しておくことが望ましいので、 #include<stdio.h> void main(void) { int i,money; printf("借りる本数を入力 ---> "); scanf("%d",&i); if(i < 5){ money = i * 150; } else if(i == 5){ money = 650 ; } else{ money = i * 100 + 150 ; } printf("合計金額は%d円です。\n",money); }
- ranx
- ベストアンサー率24% (357/1463)
> どこが間違ってるでしょうか?? ほとんどすべて間違っています。 もう一度最初から考えましょう。
- Mizyu
- ベストアンサー率41% (245/593)
#include<stdio.h> void main(void) { int i,money; //変数初期化 i=0; money=0; printf("借りる本数を入力 ---> "); scanf("%d",&i); // 本数が5本未満の場合 if(i < 5){ money = i * 150; } // 本数が5本以上の場合 else{ money = (i*150) + (i-5)*100; } printf("合計金額は%d円です。\n",money); } ------------- アドバイス 1) 変数は初期化すること。 2) if文の考え方の見直し。 <処理1> if (条件){ <処理2> }else{ <処理3> } <処理4> 条件が真の場合は<処理1><処理2><処理4> 条件が偽の場合は<処理1><処理3><処理4>
- 78tch
- ベストアンサー率31% (50/157)
moneyはどこで初期化されてますか? money-100 のmoneyの値は決まってますか?
補足
if(i < 5){ money = i * 150; } のmoneyを else if(i == 5){ money = money - 100; } のmoney-100のmoneyに当てはめて考えたいのです。 お願いします。