質問は簡単です。関数があるとしましょう
double interpolate (double x);
そして、たとえば
5 15
7 18
10 22などの既知の x-> y のマップを持つテーブルがあることに
注意してください:実際のテーブルはより大きく、これは単なる例です。
したがって、8 の場合、18+((8-7)/(10-7))*(22-18)=19.3333333 が返されます。
私が見つけたクールな方法の 1 つは、 http://www.bnikolic.co.uk/blog/cpp-map-interp.htmlです (簡単に言えば、std::map、key= x、value = y for x->y を使用します)。データペア)。
誰かが if else if else way とは何かと尋ねると、基本的には次のようになります。
if ((x>=5) && (x<=7))
{
//interpolate
}
else
if((x>=7) && x<=10)
{
//interpolate
}
では、それを行うためのより賢い方法や、最先端の地図を作成する方法はありますか? :)
ところで、私は C++ のソリューションを好みますが、明らかに、C++ に 1:1 でマッピングされる言語ソリューションはどれも優れています。