【ニコニコ動画】ミクと学ぶ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; }