C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でレースの有利なスタート(ハンデ)を求めるプログラム

この問題では、100メートル競走において、走者Aが走者Bと走者Cにそれぞれ与えるハンデ(有利なスタート距離)を表す2つの整数が与えられます。ここでは、C++でレースのハンデを求めるプログラムの作成方法を解説します。

問題の概要

100メートル競走で、AがBに与えるハンデと、AがCに与えるハンデがそれぞれ分かっているとします。このとき求めたいのは、BがCに与えるべき相対的なハンデです。

「AがBにハンデとしてXメートル与える」とは、Aが100メートル完走する間に、Bは(100 − X)メートルだけ走ればよいという意味です。つまり、Bはその分だけゴールに近い位置からスタートできることになります。

入力例

12, 34

出力例

25

解説

AはBに12メートルのハンデを与えています。つまり、Aが100メートル走る間に、Bは88メートル走ればゴールできます。

同様に、AはCに34メートルのハンデを与えています。つまり、Aが100メートル走る間に、Cは66メートル走ればよいことになります。

ここで、Bが100メートル走ったときにCがどれだけ進むかを計算してみましょう。

(66 × 100) ÷ 88 = 75

Bが100メートル走っても、Cは75メートルしか進みません。したがって、公平なレースにするためにBがCに与えるべきハンデは次のようになります。

100 − 75 = 25メートル

解法アプローチ

まず、Aが100メートル走ったときにBとCがそれぞれ走る距離を求めます。次に、以下の式を使って、Bが100メートル走ったときにCが走る距離を計算します。

Cの走行距離 × 100 ÷ Bの走行距離

この距離を100から引くことで、BがCに与えるべきハンデが求まります。

ハンデ = 100 − ((100 − C) × 100) ÷ (100 − B)

サンプルプログラム

この解法の動作を示すプログラムは以下の通りです。

コード例

#include <iostream>
using namespace std;
int CalcHeadStart(int B, int C) {
    return ( 100 - ( ( (100 - C)*100 ) / (100 - B)) ) ;
}
int main() {
    int B = 12, C = 34;
    cout<<"Head start in a race by B to C is "<<CalcHeadStart(B, C) << " meters";
    return 0;
}

実行結果

Head start in a race by B to C is 25 meters
  1. 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) 解法のアプロ

  2. C++で平行四辺形の面積を求めるプログラムの作成方法

    この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ