matematykaszkolna.pl
C++ Si plas plas: Napisz klase wektorn słuzaca do przechowywania wektorów w przestrzeniach wielowymiarowych. Wszystkie pola w klasie wektorn powinny byc prywatne. Mam problem z napisaniem konstruktora, ktory jako argument dostaje int'a i ma dynamicznie zaalokowac pamiec dla n−wymiarowego wektora bylbym wdzieczny za pomoc/wskazowki
27 lut 22:16
Si plas plas: odrazu dodam, ze problemem raczej nie byla by implementacja tylko po prostu nie moge tego konceptualnie pojac
27 lut 22:17
Dziadek Mróz: #include <iostream> #include <cmath> template <int n> class Vectorn { private: size_t *coord; public: Vectorn() { if (n < 0) coord = new size_t[0]; else coord = new size_t[n]; if (n > 0) std::cout << "Podaj wspolrzedne wektora:\n"; for (size_t i = 0; i < n; i++) { std::cout << "[" << static_cast<char>('a'+i) << "]: "; std::cin >> coord[i]; } } Vectorn(int c) { if (n < 0) coord = new size_t[0]; else coord = new size_t[n]; for (size_t i = 0; i < n; i++) { coord[i] = 0; } } ~Vectorn() { delete[] coord; } double length(const Vectorn<n> &v) { double len = 0; for (size_t i = 0; i < n; i++) { len += pow(coord[i] − v.coord[i], 2); } len = sqrt(len); return len; } friend std::ostream &operator <<(std::ostream &os, const Vectorn<n> &v) { os << "( "; for (size_t i = 0; i < n; i++) { os << v.coord[i] << " "; } os << ")\n"; return os; } }; int main (int argc, char const* argv[]) { //Vectorn<0> v0; //Vectorn<2> v2; Vectorn<3> v3; //std::cout << v0; //std::cout << v2; //std::cout << v3; std::cout << v3.length(Vectorn<3>(0)) << "\n"; std::cout << v3.length(Vectorn<3>()) << "\n"; return 0; }
28 lut 14:38
Dziadek Mróz: Vectorn() tworzy wektor z danymi z wejścia istream Vectorn(int c) tworzy wektor o wspólrzednych (c, ...)
28 lut 14:40
Si plas plas: dzieki!
28 lut 22:54