From 56abebdcc82c6248b74373a26dc9d9f004c18ee6 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Mon, 4 Oct 2021 00:56:20 +0300 Subject: [PATCH] lesson_4 --- lesson_4/exercise_1.cpp | 79 ---------------------- lesson_4/exercise_1.hpp | 22 ------ lesson_4/exercise_2.cpp | 10 --- lesson_4/exercises.cpp | 48 +++++++++++++ lesson_4/{exercise_2.hpp => exercises.hpp} | 5 ++ lesson_4/main.cpp | 6 +- lesson_4/templates.hpp | 46 +++++++++++++ 7 files changed, 102 insertions(+), 114 deletions(-) delete mode 100644 lesson_4/exercise_1.cpp delete mode 100644 lesson_4/exercise_1.hpp delete mode 100644 lesson_4/exercise_2.cpp create mode 100644 lesson_4/exercises.cpp rename lesson_4/{exercise_2.hpp => exercises.hpp} (61%) create mode 100644 lesson_4/templates.hpp diff --git a/lesson_4/exercise_1.cpp b/lesson_4/exercise_1.cpp deleted file mode 100644 index 12ac4e7..0000000 --- a/lesson_4/exercise_1.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * exercise_1.cpp - * - * Created on: 2 окт. 2021 г. - * Author: alexander - */ - -#include -#include -#include -#include -#include -#include - -#include "exercise_1.hpp" - -using namespace std; - -template class TContainer, typename TItem, typename TIterator> -void generatorInt(TContainer &c, const unsigned int &i) -{ - random_device rd; - mt19937 mersenne(rd()); - uniform_int_distribution uid(-static_cast(i), i); - generate(c.begin(), c.end(), [&]() - { - return uid(mersenne); - }); -} - -template class TContainer, typename TItem, typename TIterator> -void generatorFloat(TContainer &c, const unsigned int &f) -{ - random_device rd; - mt19937 mersenne(rd()); - uniform_real_distribution urd(-static_cast(f), static_cast(f)); - generate(c.begin(), c.end(), [&]() - { - return urd(mersenne); - }); -} - -template class TContainer, typename TItem, typename TIterator> -void print(const TContainer &c) -{ - copy(c.begin(), c.end(), ostream_iterator { cout, " " }); - cout << endl; -} - -template class TContainer, typename TItem, typename TIterator> -void insert_sorted(TContainer &c, const TItem &i) -{ - typename TContainer::iterator it = find_if(c.begin(), c.end(), [&](const TItem ¤t) - { - return current >= i; - }); - c.insert(it, i); -} - -void exercise_1() -{ - const unsigned int size = 10; - int newIntValue = -3; - double newDoubleValue = 2.2; - - vector v(size); - generatorInt(v, size); - sort(v.begin(), v.end()); - print(v); // -9 -9 -4 3 3 4 6 8 9 10 - insert_sorted(v, newIntValue); - print(v); // -9 -9 -4 -3 3 3 4 6 8 9 10 - - list l(size); - generatorFloat(l, size); - l.sort(); - print(l); // -9.31992 -6.76971 -5.98545 -2.1297 -1.9722 -0.292701 0.715274 3.43089 4.35249 9.45377 - insert_sorted(l, newDoubleValue); - print(l); // -9.31992 -6.76971 -5.98545 -2.1297 -1.9722 -0.292701 0.715274 2.2 3.43089 4.35249 9.45377 -} diff --git a/lesson_4/exercise_1.hpp b/lesson_4/exercise_1.hpp deleted file mode 100644 index bde2d44..0000000 --- a/lesson_4/exercise_1.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/* - * exercise_1.hpp - * - * Created on: 2 окт. 2021 г. - * Author: alexander - */ - -#pragma once - -template class TContainer, typename TItem, typename TIterator> -void generatorInt(TContainer &c, const unsigned int &i); - -template class TContainer, typename TItem, typename TIterator> -void generatorFloat(TContainer &c, const unsigned int &i); - -template class TContainer, typename TItem, typename TIterator> -void print(const TContainer &c); - -template class TContainer, typename TItem, typename TIterator> -void insert_sorted(TContainer &c, const TItem &i); - -void exercise_1(); diff --git a/lesson_4/exercise_2.cpp b/lesson_4/exercise_2.cpp deleted file mode 100644 index d62614f..0000000 --- a/lesson_4/exercise_2.cpp +++ /dev/null @@ -1,10 +0,0 @@ -/* - * exercise_2.cpp - * - * Created on: 2 окт. 2021 г. - * Author: alexander - */ - -#include "exercise_2.hpp" - - diff --git a/lesson_4/exercises.cpp b/lesson_4/exercises.cpp new file mode 100644 index 0000000..cebd20c --- /dev/null +++ b/lesson_4/exercises.cpp @@ -0,0 +1,48 @@ +/* + * exercise.cpp + * + * Created on: 3 окт. 2021 г. + * Author: alexander + */ + +#include "exercises.hpp" +#include + +void exercise_1() +{ + const unsigned int size = 10; + int newIntValue = -3; + double newDoubleValue = 2.2; + + vector v(size); + generator(v, -10, 10); + sort(v.begin(), v.end()); + print(v); // -9 -9 -4 3 3 4 6 8 9 10 + insert_sorted(v, newIntValue); + print(v); // -9 -9 -4 -3 3 3 4 6 8 9 10 + + list l(size); + generator(l, -10.0, 10.0); + l.sort(); + print(l); // -9.31992 -6.76971 -5.98545 -2.1297 -1.9722 -0.292701 0.715274 3.43089 4.35249 9.45377 + insert_sorted(l, newDoubleValue); + print(l); // -9.31992 -6.76971 -5.98545 -2.1297 -1.9722 -0.292701 0.715274 2.2 3.43089 4.35249 9.45377 +} + +void exercise_2() +{ + vector v(100); + + double error = 0; + generator(v, -1000.0, 1000.0); + + print(v); // 1-ый вектор - печать исходного вектора + copy(v.begin(), v.end(), ostream_iterator { cout, " " }); // 2-ой вектор - печать целочисленного вектора + + for_each(v.begin(), v.end(), [&](const double &i) + { + error += pow(i - static_cast(i), 2); + }); + + cout << endl << error << endl; +} diff --git a/lesson_4/exercise_2.hpp b/lesson_4/exercises.hpp similarity index 61% rename from lesson_4/exercise_2.hpp rename to lesson_4/exercises.hpp index b023320..5fad107 100644 --- a/lesson_4/exercise_2.hpp +++ b/lesson_4/exercises.hpp @@ -6,3 +6,8 @@ */ #pragma once + +#include "templates.hpp" + +void exercise_1(); +void exercise_2(); diff --git a/lesson_4/main.cpp b/lesson_4/main.cpp index f0377c4..118482b 100644 --- a/lesson_4/main.cpp +++ b/lesson_4/main.cpp @@ -5,12 +5,12 @@ * Author: alexander */ -#include "exercise_1.hpp" -#include "exercise_2.hpp" +#include "exercises.hpp" int main() { - exercise_1(); +// exercise_1(); + exercise_2(); return 0; } diff --git a/lesson_4/templates.hpp b/lesson_4/templates.hpp new file mode 100644 index 0000000..9de904e --- /dev/null +++ b/lesson_4/templates.hpp @@ -0,0 +1,46 @@ +/* + * exercise_1.hpp + * + * Created on: 2 окт. 2021 г. + * Author: alexander + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +using namespace std; + +template class TContainer, typename TItem, typename TIterator, typename T> +void generator(TContainer &c, const T &rangeStart, const T &rangeEnd) +{ + random_device rd; + mt19937 mersenne(rd()); + uniform_real_distribution urd(rangeStart, rangeEnd); + generate(c.begin(), c.end(), [&]() + { + return urd(mersenne); + }); +} + +template class TContainer, typename TItem, typename TIterator> +void print(const TContainer &c) +{ + copy(c.begin(), c.end(), ostream_iterator { cout, " " }); + cout << endl; +} + +template class TContainer, typename TItem, typename TIterator> +void insert_sorted(TContainer &c, const TItem &i) +{ + typename TContainer::iterator it = find_if(c.begin(), c.end(), [&](const TItem ¤t) + { + return current >= i; + }); + c.insert(it, i); +}