• 締切済み

プログラムの修正お願いします。

レンタルビデオを借りる。 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); }

みんなの回答

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.5

#2です。失礼しました。間違いです。 × money = (i*150) + (i-5)*100; ○ money = (4*150) + (i-4)*100;

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.4

まちがっているのは、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)
回答No.3

> どこが間違ってるでしょうか?? ほとんどすべて間違っています。 もう一度最初から考えましょう。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.2

#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)
回答No.1

moneyはどこで初期化されてますか? money-100 のmoneyの値は決まってますか?

tv_mania
質問者

補足

if(i < 5){ money = i * 150; } のmoneyを else if(i == 5){ money = money - 100; } のmoney-100のmoneyに当てはめて考えたいのです。 お願いします。

関連するQ&A