1

私は C++ の初心者ですが、可変量の要素を持つベクトルを降順で取り、各要素間のパーセンテージ ドロップを見つけようとしています。

たとえば、{10 5 2.5 1 ] の場合、ドロップ率を示す [50 50 40} を示すベクトルを出力するにはどうすればよいでしょうか。

前もって感謝します!

4

3 に答える 3

4

対応するループを自分で作成するか、標準アルゴリズム std::transform を使用できます。例えば

    std::vector<double> v = { 10, 5, 2.5, 1 };

    std::transform( std::next( v.begin() ), v.end(), v.begin(), std::ostream_iterator<double>( std::cout, " " ),
        []( double x, double y ) { return ( x * 100 / y ); } );
    std::cout << std::endl;
于 2013-11-11T18:56:49.800 に答える
0

Vladが言及したループ方法は次のとおりです。

#include <iostream>
#include <vector>

int main() {
    double val;
    std::vector<double> values, percentages;

    while(std::cin >> val) {        //get values from user
        values.push_back(val);      //on linux, terminate with CTRL+D
    }
    for(unsigned i = 0; i < values.size() - 1; ++i) {       //calculate percentage differences
        percentages.push_back((values[i+1] / values[i]) * 100); //and populate percentage vector
    }
    for(auto it : percentages) {    //print percentage vector
        std::cout << it << " ";
    }
    std::cout << std::endl;
}

生成される出力は次のとおりです。

10
5
2.5
1
50 50 40 
于 2013-11-11T21:03:17.090 に答える