問題文
タクシーメータのプログラムを作成する。
初乗料金、走行料金、走行料金が加算される距離を設定し、キーボードから走行距離を入力させ、乗車料金を求めるプログラム。
走行距離は、km単位で入力させ、あり得ない走行距離(例:0m以下)が入された場合は、再度入力を求める。
初乗料金:620円、走行料金:230円、走行料金が加算される距離:310m、としてプログラム作成する。
※赤文字はユーザに入力を求める箇所、青文字は、入力により表示が変動する箇所です。
プログラムの手順
- 変数を宣言する
- 走行距離の入力を求める
- 走行距離の判定を行い、0以下の場合、再び入力を求める
- 走行距離をm単位に変換する
- 走行料金の加算距離を、走行距離から引き続け、カウントする
- 乗車料金を計算する
- 乗車料金を表示する
サンプルプログラム
/*
タクシーメータで乗車料金を表示するプログラム
*/
#include <stdio.h>
/* 初乗り料金 */
#define HATSUNORI 620
/* 走行料金が加算される距離 */
#define SOUKOURYOUKIN 230
/* 走行料金 */
#define SOUKOUKYORI 310
/*-- 走行料金の計算に利用する関数 --*/
int count_soukou(int n)
{
int count = 0;
while (n >= SOUKOUKYORI) {
count++;
n -= SOUKOUKYORI;
}
return count;
}
/* 乗車料金を実際に計算する関数 */
int calc_ryoukin(int n)
{
int ryoukin;
ryoukin = HATSUNORI + SOUKOURYOUKIN * n;
return ryoukin;
}
int main(void)
{
int m;
double km;
do {
printf("走行距離を入力してください(km単位):");
scanf("%lf", &km);
if (km <= 0) {
puts("不正な走行距離が入力されました。もう一度入力してください。");
}
} while (km <= 0);
m = km * 1000;
printf("乗車料金は、%d円です。", calc_ryoukin(count_soukou(m)));
return 0;
}
うおな
今回は、これまでの練習問題とは違い、main関数の中に全てを記述するのではなく、count_soukouとcalc_ryoukinという関数を別に作成し、乗車料金の算出に利用しています。
また、#defineで、初乗料金などを設定しています。算出する料金設定を変更したい場合、プログラムの冒頭部分の金額や距離を書き換えるだけで済むようになっています。