diff --git a/src/algo.cpp b/src/algo.cpp new file mode 100644 index 0000000..f13f6b4 --- /dev/null +++ b/src/algo.cpp @@ -0,0 +1,11 @@ +#include "algo.h" + +void bubble_sort_print_demo() +{ + int demo[]{11, 14, 3, 18, 8, 17, 43, 6, 5, 4}; + double demo2[]{11.2, 14.3, 3.2, 18.6, 8.7, 17.9, 43.3, 12.3}; + std::string demo3[]{"hallo", "velo", "kekw", "imagin"}; + bubble_sort_print(sizeof(demo) / sizeof(demo[0]), demo); + bubble_sort_print(sizeof(demo2) / sizeof(demo2[0]), demo2); + bubble_sort_print(sizeof(demo3) / sizeof(demo3[0]), demo3); +} \ No newline at end of file diff --git a/src/algo.h b/src/algo.h new file mode 100644 index 0000000..52bc41f --- /dev/null +++ b/src/algo.h @@ -0,0 +1,55 @@ +#pragma once +#include +#include +#include + +void bubble_sort_print_demo(); + +template +struct TypeName +{ + static const char *Get() + { + return typeid(T).name(); + } +}; +template <> +struct TypeName +{ + static const char *Get() + { + return "s"; + } +}; + +template +void bubble_sort(int size, T *a) +{ + for (int i = 0; i < size; i++) + { + for (int j = 0; j < size - 1 - i; j++) + { + if (a[j] > a[j + 1]) + { + T temp{a[j]}; + a[j] = a[j + 1]; + a[j + 1] = temp; + } + } + } +}; + +template +void bubble_sort_print(int size, T *a) +{ + std::cout << std::left; // left justify output + std::cout << "unsorted " << TypeName::Get() << std::setw(10) << " Array: "; + for (int i = 0; i < size; i++) + std::cout << a[i] << ", "; + std::cout << "\n"; + bubble_sort(size, a); + std::cout << "sorted " << TypeName::Get() << std::setw(12) << " Array: "; + for (int i = 0; i < size; i++) + std::cout << a[i] << ", "; + std::cout << "\n\n"; +}; \ No newline at end of file diff --git a/src/io.cpp b/src/io.cpp index 1da65ac..c8a8734 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -1,6 +1,7 @@ #include "io.h" #include #include + void add_two_numbers() { int a{read_number()}; @@ -25,6 +26,7 @@ void convert_char_to_ascii() std::cin >> c; std::cout << "You entered '" << c << "', which hass ASCII code " << static_cast(c) << "."; } + void print_type_size_bytes() { std::cout << std::left; // left justify output @@ -36,5 +38,17 @@ void print_type_size_bytes() std::cout << std::setw(16) << "long long:" << sizeof(long long) << " bytes\n"; std::cout << std::setw(16) << "float:" << sizeof(float) << " bytes\n"; std::cout << std::setw(16) << "double:" << sizeof(double) << " bytes\n"; - std::cout << std::setw(16) << "long double:" << sizeof(long double) << " bytes\n"; + std::cout << std::setw(16) << "long double:" << sizeof(long double) << " bytes\n\n"; +} +void string_demo() +{ + using namespace std; + cout << "Enter your full name: "; + string name{}; + getline(cin >> ws, name); + cout << "Enter your age: "; + int age{}; + cin >> age; + int letters{static_cast(name.length())}; + cout << "Your age + length of name is: " << (letters + age) << "\n"; } \ No newline at end of file diff --git a/src/io.h b/src/io.h index 39c803b..74cc367 100644 --- a/src/io.h +++ b/src/io.h @@ -4,4 +4,5 @@ void add_two_numbers(); int read_number(); void write_answer(int x); void convert_char_to_ascii(); -void print_type_size_bytes(); \ No newline at end of file +void print_type_size_bytes(); +void string_demo(); \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 8fa3148..b0c8dde 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,77 +1,14 @@ #include // for std::cout #include "io.h" -#include +#include "algo.h" -// Definition of function main() -double get_user_double() -{ - std::cout << "Enter a double value: "; - double x{}; - std::cin >> x; - return x; -} -char get_user_operator() -{ - std::cout << "Enter +, -, * or /: "; - char x{}; - std::cin >> x; - return x; -} -void print_result(double a, double b, char c) -{ - double result{}; - switch (c) - { - case '+': - result = a + b; - break; - case '-': - result = a - b; - break; - case '*': - result = a * b; - break; - case '/': - result = a / b; - break; - default: - return; - } - std::cout << a << ' ' << c << ' ' << b << " is " << result; -} -void task1() -{ - double a{get_user_double()}; - double b{get_user_double()}; - char c{get_user_operator()}; - print_result(a, b, c); -} - -long get_user_tower_height() -{ - std::cout << "Enter the height of the tower in meters: "; - long x{}; - std::cin >> x; - return x; -} -void task2() -{ - long tower_height{get_user_tower_height()}; - for (size_t i = 0; i < 6; i++) - { - double result{static_cast(tower_height) - 9.8 * pow(static_cast(i), 2) / 2}; - if (result <= 0.0) - std::cout << "At " << i << " seconds, the ball is on the ground\n"; - else - std::cout << "At " << i << " seconds, the ball is at height: " << result << " meters\n"; - } -} int main() { + // string_demo(); // add_two_numbers(); // convert_char_to_ascii(); - // print_type_size_bytes(); - // task1(); - task2(); + print_type_size_bytes(); + // bubble_sort_print_demo(); + return 0; -} \ No newline at end of file +}