ある駐車場の駐車料金は 1 時間 80 円, 24 時間以内であれば 1500 円を上限としている.
ただし, 24 時間を超えて駐車した場合の料金は 1 日ごとに 1500 円となる.
例) 10 時間 → 800円, 20 時間 → 1500円, 24 時間 → 1500 円,
25 時間 → 3000 円, 48時間 → 3000円, 49時間 → 4500円
実行結果1
時間を入力> 5
400円
実行結果 2
時間を入力> 30
3000円
実行結果 3
時間を入力> 180
12000円
という問題がわかりません…
色々と考えてみましたがどうしてもわかりません
どなたかお知恵を貸してください
下のは自分なりに考えたものです。
自分の実力ではこれが限界でした…
if文の問題です…
Re: if文の問題です…
たぶん合ってるんじゃないかと思いますがどうでしょう…。
#include <stdio.h>
int getHour(void)
{
int hour;
printf("時間を入力> ");
scanf("%d", &hour);
return hour;
}
int calcFee(int hour)
{
int fee;
if (hour <= 24) {
fee = 80 * hour;
if (fee > 1500) {
fee = 1500;
}
}
else {
fee = 1500 * (hour / 24 + ((hour % 24 == 0) ? 0 : 1));
}
return fee;
}
int main(void)
{
printf("%d円\n", calcFee(getHour()));
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: if文の問題です…
main()は他の関数を呼び出すだけにしたのと、
calcFee()の仕様を一部見直してみました。
p.s.
変数名は(自作関数名も)意味のあるものにしましょう。
aとかbとかcとかじゃ何のことかわかりません。>質問者さん
calcFee()の仕様を一部見直してみました。
p.s.
変数名は(自作関数名も)意味のあるものにしましょう。
aとかbとかcとかじゃ何のことかわかりません。>質問者さん
#include <stdio.h>
int getHour(void)
{
int hour;
printf("時間を入力> ");
scanf("%d", &hour);
return hour;
}
int calcFee(int hour)
{
int fee;
fee = 1500 * (hour / 24 + ((hour % 24 == 0) ? 0 : 1));
if (hour <= 24) {
fee = 80 * hour;
if (fee > 1500) fee = 1500;
}
return fee;
}
void printFee(int fee)
{
printf("%d円\n", fee);
}
int main(void)
{
printFee(calcFee(getHour()));
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: if文の問題です…
もっと遊んでみた。
#include <stdio.h>
int getHour(void)
{
int hour;
printf("時間を入力> ");
scanf("%d", &hour);
return hour;
}
int calcFee(int hour)
{
int fee = 1500 * (hour / 24 + ((hour % 24 == 0) ? 0 : 1));
if (hour <= 24) fee = ((fee = 80 * hour) > 1500) ? 1500 : fee;
return fee;
}
void printFee(int fee)
{
printf("%d円\n", fee);
}
int main(void)
{
printFee(calcFee(getHour()));
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。