ページ 11

C言語の課題です

Posted: 2013年5月21日(火) 23:56
by もち
問題は
ある駐車場の駐車料金は1 時間100 円だが、24 時間以内であれば800 円を上限としている。ただし、
24 時間を超えて駐車した場合の料金は1 日ごとに800 円となる。このとき、駐車時間を入力すると料
金を表示するプログラムを作成せよ。入力される数値として、正の整数値に対応すること。
で自分の書いたコードは

コード:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int time,b;
  printf ("time=");
  scanf("%d",&time);
  if(time>=24){
   b=time%24;
   if(b=0){
   printf("money=%d \n",time/24*800);
  }
   else{
   printf("money=%d \n",(time/24+1)*800);
  }
 }
  else{
   printf("money=%d \n",time*100);
 }
  exit(0);
}
です
でもこれだと24を入力しても1600になってしまいます
多分12行目が動いてないんだと思うのですがどうしたらいいですか?
初心者とも言えないほどの初心者の質問ですいません

Re: C言語の課題です

Posted: 2013年5月22日(水) 00:05
by きゃりーわんわん
もち さんが書きました:

コード:

   if(b=0){
   printf("money=%d \n",time/24*800);
  }
上記コードのif文は意図した通りに動作しません。
C言語において、"="は代入です。
等しいかどうかは"=="です。

Re: C言語の課題です

Posted: 2013年5月22日(水) 00:16
by もち
なるほど
習ったのにすっかり忘れてました
ありがとうございます!

Re: C言語の課題です

Posted: 2013年5月22日(水) 01:37
by YuO
直接質問と関係ないので控えていましたが,このままでは
  • 9時間駐車したら900円
  • 23時間駐車したら2300円
  • 24時間駐車したら800円
という結果が出てしまいますよ。
time * 100で計算するのは,timeが8以上では打ち止めにしておかないといけません。

問題文を
  • 1日ごとに800円
  • ただし,連続8時間以下の利用では1時間あたり100円とする (今回は8時間未満としても同じ事になる)
というふうに読み替えて,プログラムを組むと上記のようなことがおこらなくなります。