【C++】混合液の置換操作を繰り返した後に残る量を求めるプログラム
このチュートリアルでは、混合物の置換操作を繰り返した後に残る牛乳の量を求めるC++プログラムについて解説します。
問題の概要
容器にXリットルの牛乳が入っているとします。そこからYリットルの牛乳を取り出し、代わりに同量のYリットルの水を注ぎます。この同じ操作を合計Z回繰り返したとき、容器に最終的に残る牛乳の量を求めるのが今回の課題です。
計算式の導出
1回の置換操作のたびに、牛乳は一定の割合で減少していきます。各操作間の値の関係を整理すると、Z回の操作後に残る牛乳の量は次の式で表せます。
残量 = ((X − Y) / X)Z × X
この式では、1回の操作後に残る牛乳の割合 (X − Y) / X をZ乗することで、操作をZ回繰り返した後の割合を求め、それに元の量Xを掛けて最終的な残量を計算しています。
サンプルコード(C++)
#include <bits/stdc++.h>
using namespace std;
// 最終的な牛乳の量を計算する関数
float calc_milk(int X, int Y, int Z) {
float result = 0.0, result1 = 0.0;
result1 = ((X - Y) / (float)X);
result = pow(result1, Z);
result = result * X;
return result;
}
int main() {
int X = 13, Y = 2, Z = 5;
cout << calc_milk(X, Y, Z) << endl;
return 0;
}
実行結果
5.63884
コードの解説
calc_milk関数では、まず (X − Y) / X によって1回の操作後に残る牛乳の割合を計算します。ここで、整数同士の除算による切り捨てを防ぐため、Xをfloat型にキャストしている点に注意してください。
次に、pow関数を使ってこの割合のZ乗を求め、最後に元の量Xを掛けることで、Z回の置換操作後に残る牛乳の量を算出します。
サンプルではX=13、Y=2、Z=5としているため、(11/13)5 × 13 ≒ 5.63884リットルという結果が得られます。
-
C++で三角形の重心を求めるプログラムの作成方法
この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ
-
C++で平行四辺形の面積を求めるプログラムの作成方法
この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ