C++でタンク満杯時に無駄になる水の量を計算する方法
はじめに
このチュートリアルでは、次の問題をC++で解く方法を解説します。
容量がNリットルのタンクがあり、ポンプを使って毎分Sリットルの速度で水を注入します。ところが、タンクには穴が空いていて、水を入れている間、毎分WSリットルの速度で水が漏れ出てしまいます。
このとき、タンクを満杯にするまでに無駄になる水の総量を求めるのが今回のゴールです。
計算の考え方
この問題は、次の3つのステップで解くことができます。
まず、タンクに実際に溜まっていく水の量は、「注水速度から漏水速度を引いた差」に等しくなります。
次に、タンクの容量を毎分の実質注水量で割ることで、タンクが満杯になるまでにかかる時間を求められます。
最後に、漏水速度に満杯までの時間を掛ければ、無駄になる水の総量を簡単に計算できます。
コード例
それでは、実際のコードを見てみましょう。
#include <iostream>
using namespace std;
double countTheWastedWater(double N, double S, double WS) {
double wasted_water, fill_per_minute, time_to_fill;
fill_per_minute = S - WS;
time_to_fill = N / fill_per_minute;
wasted_water = WS * time_to_fill;
return wasted_water;
}
int main() {
double N, S, WS;
N = 275;
S = 10;
WS = 3;
cout << countTheWastedWater(N, S, WS) << endl;
return 0;
}実行結果
上記のプログラムを実行すると、次の結果が得られます。
117.857
この例では、実質的な注水速度は毎分7リットル(10 − 3)となり、275リットルのタンクが満杯になるまでに約39.29分かかります。その間に毎分3リットルずつ漏れ続けるため、無駄になる水の量は約117.857リットルと計算されます。
まとめ
このように、注水速度と漏水速度の差から満杯までの時間を求め、そこに漏水速度を掛けることで、タンク満杯時に無駄になる水の量を簡単に算出できます。本チュートリアルについて質問がある場合は、ぜひコメント欄でお知らせください。
-
【C++】混合液の置換操作を繰り返した後に残る量を求めるプログラム
このチュートリアルでは、混合物の置換操作を繰り返した後に残る牛乳の量を求めるC++プログラムについて解説します。 問題の概要 容器にXリットルの牛乳が入っているとします。そこからYリットルの牛乳を取り出し、代わりに同量のYリットルの水を注ぎます。この同じ操作を合計Z回繰り返したとき、容器に最終的に残る牛乳の量を求めるのが今回の課題です。 計算式の導出 1回の置換操作のたびに、牛乳は一定の割合で減少していきます。各操作間の値の関係を整理すると、Z回の操作後に残る牛乳の量は次の式で表せます。 残量 = ((X − Y) / X)Z × X この式では、1回の操作後に残る牛乳の割合 (X − Y)
-
C++で混合液を目標の濃度にするために必要な水の追加量を求める方法
問題の概要容量 X の容器に、水と別の液体が混ざった混合液が入っているとします。この混合液に含まれる水の割合は W% です。ここで、水を追加して水の割合を Y% まで引き上げたい場合、何リットルの水を加えればよいのでしょうか?例えば、X = 125、W = 20、Y = 25 という条件の場合、必要な水の量は 8.33 リットルとなります。計算式の導出元の混合液に A リットルの水を加えると、混合液の総量は X + A になります。このとき、混合液中の水の総量は次の式で表せます。(元の水の量) + A = (X の W%) + A一方、新しい混合液における水の割合は Y% なので、水の量は (