C++で販売価格と利益率・損失率から原価を求める方法
販売価格が分かっており、そこに利益率または損失率の情報が与えられている場合を考えてみましょう。このとき、商品の原価(仕入れ値)を逆算して求める必要があります。その計算式は以下の通りです。
$$原価=\frac{販売価格×100}{100+利益率}$$ $$原価=\frac{販売価格×100}{100-損失率}$$
利益が出ている場合は分母に利益率を加算し、損失が出ている場合は分母から損失率を減算することで、元々の仕入れ値を算出できます。この式をC++の関数として実装すると、次のようになります。
サンプルコード
#include<iostream>
using namespace std;
// 利益率から原価を求める関数
float priceWhenProfit(int sellPrice, int profit) {
return (sellPrice * 100.0) / (100 + profit);
}
// 損失率から原価を求める関数
float priceWhenLoss(int sellPrice, int loss) {
return (sellPrice * 100.0) / (100 - loss);
}
int main() {
int SP, profit, loss;
// 利益がある場合の計算
SP = 1020;
profit = 20;
cout << "Cost Price When Profit: " << priceWhenProfit(SP, profit) << endl;
// 損失がある場合の計算
SP = 900;
loss = 10;
cout << "Cost Price When loss: " << priceWhenLoss(SP, loss) << endl;
}
実行結果
Cost Price When Profit: 850 Cost Price When loss: 1000
このプログラムでは、販売価格1,020円で利益率が20%の場合、原価は850円と計算されます。また、販売価格900円で損失率が10%の場合、原価は1,000円となります。なお、計算の精度を保つために、分子の「sellPrice * 100.0」のように浮動小数点数で演算している点に注目してください。整数同士で割り算を行うと小数点以下が切り捨てられてしまうため、正確な結果を得るにはこの工夫が重要です。
-
C++で二分木のルートから特定ノードまでの距離を求める方法
二分木が与えられたとき、ルートから特定のノード u までの距離(経路の長さ)を求める問題を考えてみましょう。例として、次のような二分木を想定します。この木において、ルートからノード6までの距離は2、ルートからノード8までの距離は3となります。解決のアプローチこの問題は、再帰的な手法を用いて解くことができます。具体的には、目的のノードを左部分木と右部分木の両方に対して再帰的に探索し、再帰の各段階(レベル)で距離を1ずつ加算していきます。探索の仕組みは以下の通りです。現在のノードがNULLの場合は -1 を返します(ノードが見つからなかったことを示す)。現在のノードの値が目的の値と一致した場合、ま
-
C++でGCDとLCMの値から条件を満たす数のペアの総数を求める方法
この記事では、最大公約数(GCD)と最小公倍数(LCM)の値が与えられたとき、その両方の条件を満たす整数のペアが全部で何通り存在するかを求める方法を解説します。 例として、GCDが2、LCMが12の場合を考えてみましょう。この条件を満たすペアは (2, 12)、(4, 6)、(6, 4)、(12, 2) の4つです。プログラムの目的は、このペアの総数「4」を計算することです。 解決の鍵となる数学的性質 2つの整数 a と b の間には、次のような重要な関係が常に成り立ちます。 a × b = GCD(a, b) × LCM(a, b) また、a と b はいずれも必ず GCD で割り切れるた