Witam. Potrzebuje pomocy. Mam przestrzen n wymiarowa i posiadam obliczone punkty (niezdominowane) w 2 kontenerach. I teraz na rzecz 2 kontenerów musze obliczyć odleglosc eulkidesowa miedzy tymi punktami. (W obu kontenerach sa identyczne punkty- kopia) Proszę o szybka o pomoc.
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
#include<random>
#include<iterator>
using namespace std;
class generatorLiczbNorm {
// static – poniewa¿ ma byæ jeden generator dla ca³ego programu:
static default_random_engine rng;
// produkuje liczby o rozk³. normalnym korzystaj¹c z generatora rng:
normal_distribution<double> dist;
public:
generatorLiczbNorm(double mi = 0, double sigma = 1) : dist(mi, sigma) {};
double operator()() {
return dist(rng);
}
};
default_random_engine generatorLiczbNorm::rng;
//funkcje do generowania i losowania
double losowanie()
{
generatorLiczbNorm r(5,10);
return r();
}
void generate(vector<double> & gen)
{
generate(gen.begin(), gen.end(), losowanie);
}
//funkcja wypisz
void wypisz(vector<double> v)
{
ostream_iterator<double> str(cout, "; ");
copy(v.begin(), v.end(), str);
cout << endl;
}
double diffPow2(double x, double y) { return pow((x - y), 2.0); };
int main()
{
int n;
cout << "Prosze podac wymiar: ";
cin >> n;
vector<double> A(n);
vector<vector<double>> P(100, A),B;
//generowanie liczb
for_each(P.begin(),P.end(),generate);
for (auto const & x : P)
{
bool flag = true;
for (auto const & y : P)
{
for (int i = 0; i < n; ++i)
{
if (x[i] < y[i])
{
flag = false;
}
}
if (flag) break;
}
if (flag)
{
B.push_back(x);
}
}
vector<vector<double>> C(B);
//wypisywanie
//for_each(B.begin(), B.end(), wypisz);
cout << "Punkty: " << endl;
for_each(C.begin(), C.end(), wypisz);
/*double odlegEuklid = inner_product(B.begin()->begin(), B.end()->end(), C.begin()->begin(), 0.0, plus<double>(), diffPow2);
odlegEuklid = sqrt(odlegEuklid);
cout <<"Odelglosc Euklidesowa: " <<odlegEuklid << endl;
*/
return 0;
}