ハイパーニートプログラマーへの道

頑張ったり頑張らなかったり

【ニコニコ動画】ミクと学ぶC言語 第10回をやったんだが

いままでのおさらいということで、練習問題として運賃を求めるプログラムを組んだんですが、コメントにもあったように、速達料金を求めるためにcalculate_sokuという関数を別に用意しなくても、最後に追加料金を足す(この場合+300円)という形でいいんではないかと。

/* postage_soku.c */
#include <stdio.h>

void input_data(void);
void calculate(void);
void output_data(void);

int weight,distance,size,soku;

int main(void){
    input_data();
    calculate();
    output_data();
    return 0;
}

void input_data(void) {
    printf("---荷物のデータを入力してください---\n");
    printf("重量[ g]:"); scanf("%d", &weight);
    printf("距離[km]:"); scanf("%d", &distance);
    do {
        printf("速達にしますか? YES[1] NO[3]");
        scanf("%d", &soku);
        
    } while (soku!=1 && soku!=3); // 1か3以外ならループ
    return;
}

void calculate(void) {
    // 重量判定
    if (weight<=100) {
        size = 1;
    } else if (weight<=1000) {
        size = 2;
    } else {
        size = 3;
    }
    // 距離判定
    if (distance<=100) {
        size += 10;
    } else if (distance<=1000) {
        size += 20;
    } else {
        size +=30;
    }
    return;
}

void output_data(void) {
    int postage;
    postage = size * 50; // サイズ×50=料金
    
    printf("---計算結果---\n");
    printf("荷物のサイズ=%dサイズ\n", size);
    if (soku == 3) {
        printf("普通料金  =%d\n", postage);
        
    } else {
        printf("速達料金  =%d\n", postage + 300); // ここで追加料金
        
    }
    printf("です。\n");
    return;
}