if文の問題です…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
モノクマ

if文の問題です…

#1

投稿記事 by モノクマ » 2年前

ある駐車場の駐車料金は 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円

という問題がわかりません…
色々と考えてみましたがどうしてもわかりません
どなたかお知恵を貸してください
下のは自分なりに考えたものです。
自分の実力ではこれが限界でした…

コード:

#include <stdio.h>
int main(void)
{
    int a,b,c;
    printf("時間を入力> ");
    scanf("%d", &a);
    if(a<=24) 
        b=a*80;
    if(b>1500)
        b=1500;
    if(a%24>0)
        b=1500+(a/24)*1500;
    
        
    printf("%d円",b);
    return 0;
}

box
記事: 2002
登録日時: 13年前

Re: if文の問題です…

#2

投稿記事 by box » 2年前

たぶん合ってるんじゃないかと思いますがどうでしょう…。

コード:

#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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: if文の問題です…

#3

投稿記事 by box » 2年前

main()は他の関数を呼び出すだけにしたのと、
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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 2002
登録日時: 13年前

Re: if文の問題です…

#4

投稿記事 by box » 2年前

もっと遊んでみた。

コード:

#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;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る