1 リットルで20Km 走る車があるとします。給油の入力をした後で、走行距離(Km)
を入力する繰り返しを行います。
走行によって、燃料の残量が0 以上であれば繰り返し続けます。
最後に全走行距離と、燃料の残量を表示して終了させます。
(以下に実行例を示します。赤が入力です)
給油(初期燃料)入力>1 1回目の走行距離(km)入力>10 残り燃料は 0.50リットルです。 2回目の走行距離(km)入力>3 残り燃料は 0.35リットルです。 3回目の走行距離(km)入力>3 残り燃料は 0.20リットルです。 4回目の走行距離(km)入力>3 残り燃料は 0.05リットルです。 5回目の走行距離(km)入力>3 残り燃料は -0.10リットルです。 全走行距離は、 19.00km で、燃料の残量は、 0.05 リットルです。
いつもながら、1の処理だけをプログラミングしますが、同時に
どんな変数を必要とするか考えます。
給油(初期燃料)入力>1 1回目の走行距離(km)入力>10 残り燃料は 0.50リットルです。 2回目の走行距離(km)入力>3 残り燃料は 0.35リットルです。 3回目の走行距離(km)入力>3 残り燃料は 0.20リットルです。 4回目の走行距離(km)入力>3 残り燃料は 0.05リットルです。 5回目の走行距離(km)入力>3 残り燃料は -0.10リットルです。 全走行距離は、 19.00km で、燃料の残量は、 0.05 リットルです。
一見して違うように見えますが、
と の部分は、
全く同じ処理で、これを繰り返しています。
必要な変数は、『回数』、『燃料入力と燃料残り』、『距離入力用』、『全走行距離』が挙げられます。
次のような一回分の処理になるでしょう。
#include <stdio.h> main() { int n = 0; /* 回数 */ double nenryou; /* 燃料入力と燃料残り(リットル) */ double kyori; /* 距離入力用 */ double soukyori = 0; /* 全走行距離 */ printf("給油(初期燃料)入力>"); scanf("%lf",&nenryou); n = n + 1; printf(" %d回目の走行距離(km)入力>", n); scanf("%lf", &kyori); nenryou = nenryou - kyori / 20; /* 使った燃料を減らす */ printf("残り燃料は %6.2fリットルです。", nenryou); soukyori = soukyori + kyori; }
正しく動いたら、do { と }while(条件);で囲み、 繰り返しになっていない最後の一行を追加すれば出来上がりです。
最後に追加した表示で、全走行距離が合いません。燃料がない場合でも走行距離を増やしているからです。
soukyoriの計算する行を繰り返しの先頭に移動します。そして、距離入力用の変数を0に初期化する修正をすることで直しましょう。
(このように繰り返しでは、順番を入れ替えた方がよい場合もあります。いろいろなケースを検討しましょう。)
←正しく修正してからクリックください。
(分からない場合もクリックください)
←わからない場合は、クリックして覚え、再びチャレンジしましょう。