Re: помогите превести код из C# в C++ как положено
От: wander  
Дата: 20.06.11 19:13
Оценка: 3 (1)
Здравствуйте, RIVATNT, Вы писали:

RIV>Ребята помогите превести код из C# в C++ как положено, в последнем нифига не шарю...


RIV>
...


Возможно медвежью услугу оказываю... Ну да ладно Код практически один в один. Весь контроль значений, проверки и т.п. на твоей совести.
#include <vector>
#include <cmath>

class GaussianDistribution
{
public:
    explicit GaussianDistribution(double standardDeviation)
        : standardDeviation_(standardDeviation)
    {}
    void TapArray(std::vector<float> & weights, int numberOfTaps) const
    {
        numberOfTaps = (numberOfTaps - 1) / 2 + 1;

        std::vector<double> tempWeights(numberOfTaps);

        double sum = 0;
        for(int i = 0; i < numberOfTaps; ++i)
        {
            tempWeights[i] = Gaussian1D(i);
            sum += tempWeights[i] * 2;
        }
        sum -= tempWeights[0];

        double augmentationFactor = 1.0 / sum;

        weights.resize(numberOfTaps);
        for(int i = 0; i < numberOfTaps; ++i)
        {
            weights[i] = float(tempWeights[i] * augmentationFactor);
        }
    }

    double getStandardDeviation() const
    {
        return standardDeviation_;
    }
    void setStandardDeviation(double value)
    {
        standardDeviation_ = value;
    }
private:
    double standardDeviation_;

    double Gaussian1D(int distance) const
    {
        return 1. / (sqrt(2 * M_PI) * standardDeviation_) * exp(pow(distance, 2.) / (2 * pow(standardDeviation_, 2.)));
    }
};
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.