From f279107065146a4940f5e73602a1c3c09e58b31d Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Sun, 18 Oct 2020 18:56:43 +0200 Subject: chore: name of first year folder --- I_anno/Programmazione_1/lab_14_12_18.cc | 149 -------------------------------- 1 file changed, 149 deletions(-) delete mode 100644 I_anno/Programmazione_1/lab_14_12_18.cc (limited to 'I_anno/Programmazione_1/lab_14_12_18.cc') diff --git a/I_anno/Programmazione_1/lab_14_12_18.cc b/I_anno/Programmazione_1/lab_14_12_18.cc deleted file mode 100644 index 02bbd69..0000000 --- a/I_anno/Programmazione_1/lab_14_12_18.cc +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -#define DIM 30 - -using namespace std; - -class A { -protected: - double* ptr; - short len; - - void getPtr(ostream& os) { - os << "ptr=["; - for(int i = 0; i < len; ++i) { - os << ptr[i] << ' '; - } - - os << "]"; - } -public: - A(short n) : len{n} { - srand(time(NULL)); - ptr = new double[n]; - for(int i = 0; i < n; ++i) { - ptr[i] = (double) rand() / RAND_MAX; - } - } - - ~A() { - delete ptr; - } - virtual double foo(short a) const = 0; - virtual void print(ostream& os) = 0; - - double operator[](int i) { - return ptr[i]; - } -}; - -class B : public A { -public: - B(short m, double s) : A{m}, alpha{s} {} - double foo(short b) const { - return static_cast(log(1+extract(b))); - } - void print(ostream& os) { - os << "B, "; - getPtr(os); - os << ", alpha=" << alpha; - } - -private: - double alpha; - double extract(short s) const { - return (ptr[s%len]+alpha)/2; - } - -}; - -template -class C; - -template<> -class C : public A { -public: - C(short n) : A{n} { - x = static_cast(log(1+n)); - } - - double foo(short r) const { - return g(r*x); - } - - double g(double k) const { - return 3*k; - } - - void print(ostream& os) { - os << "C "; - getPtr(os); - os << ", x=" << x; - } -private: - short x; -}; - -template<> -class C : public A { -public: - C(short n) : A{n} { - x = g(n); - } - - double foo(short r) const { - return g(r*x); - } - - short g(short k) const { - return 3*k; - } - - void print(ostream& os) { - os << "C "; - getPtr(os); - os << ", x=" << x; - } -private: - short x; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - srand(328832748); - A* vett[DIM]; - double maxfoo{-11111111.0}; - double g_sum{}; - for(int i=0; i(n); - auto refC = dynamic_cast*>(vett[i]); - g_sum+=refC->g(5); - break; - } - case 2: vett[i]= new C(n); - - } - - double foo5 = vett[i]->foo(5); - if(foo5 > maxfoo) - maxfoo = foo5; - } - - for(int i = 0; i < DIM; ++i) { - cout << i+1 << ")" << *(vett[i]) << ", foo(5)=" << vett[i]->foo(5) << endl; - } - - cout << "max(foo(5))=" << maxfoo << " sum(g(5))=" << g_sum << endl; - cout << (*vett[2])[0] << endl; - - return 0; -} -- cgit v1.2.3-18-g5258