Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
pomoc przy c++ http://forum.freesco.pl/viewtopic.php?f=28&t=12664 |
Strona 1 z 1 |
Autor: | lukasz191 [ poniedziałek, 5 czerwca 2006, 14:29 ] |
Tytuł: | pomoc przy c++ |
mam pytanie czy ktos moze zerknac na to zadanie i popraawic je tak by dzialalo tersc zad Dla losowo wygenerowanych 20 punktow w przestrzeni trojwymiarowej obliczyc objetosc szeiscianow jakie tworza te punkty z poczatkiem ukladu wspolrzednych wartosc objetosci umiescic w oddzielnej struktore danych wyznaczyc srednia geometryczna objetosci szeiscianow usunac te punkty dla ktorych objetosc tworzonego szeiscanu jest mniejsza od sredniej geometrycznej uzyc algorytmow ogolnych i zasobnikow dostepnych w STL program #include<iostream> #include<list> #include<iterator> #include<vector> #include<functional> #include<algorithm> #include<numeric> using namespace std; struct punkt{ int x,z,y; punkt(int x_,int y_, int z_): x(x_),y(y_),z(z_){} friend ostream& operator << (ostream& out, const punkt& a){ return out<<a.x<<" "<<a.y<<" "<<a.z<<endl; } }; struct gen{ int min,max; gen(int a, int b):min(a),max(b){} int operator () (){ return rand ()% (max - min) + min; } }; struct gen_punkt{ gen g; gen_punkt(const gen g_):g(g_){} punkt operator () (){ return punkt (g(),g(),g()); } }; struct objetosc{ double operator () (const punkt& q){ return q.z*q.y*q.x; } }; struct sprawdzanie: public unary_function<punkt, double>{ double v; sprawdzanie(double v_):v(v_){} punkt operator () (punkt& r)const{ double t = r.x*r.z*r.y; if(t>v){ return r; } } }; int main(){ srand(time(0)); list<punkt> l; generate_n(back_inserter(l),20,gen_punkt(gen(1,20))); ostream_iterator<punkt> wyjscie (cout,"\n"); ostream_iterator<double> wyjscie2 (cout,"\n"); copy(l.begin(),l.end(),wyjscie); cout<<"??????????????????"<<endl; vector<double> v(l.size()); transform(l.begin(),l.end(),v.begin(),objetosc()); copy(v.begin(),v.end(),wyjscie2); cout<<">>>>>>>>>>>>>"<<endl; double temp; temp = accumulate(v.begin(),v.end(),0.0,plus<double>()); double srednia = temp/v.size(); cout<<srednia<<endl; cout<<">>>>>>>>>>>>>"<<endl; list<punkt>p; remove_copy_if(l.begin(),l.end(),back_inserter(p),sprawdzanie(srednia)); system("PAUSE"); return 0; } |
Strona 1 z 1 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |