From 06be4d907a901f2877a2333a9662a47705e625a0 Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Wed, 22 Jan 2025 00:11:04 +0100 Subject: [PATCH 1/7] timeconverter fertig --- .clang-format | 2 +- 02_Basics/CharConverter/Exercise/lib.cc | 17 +++++++++++++++++ 02_Basics/TimeConverter/Exercise/lib.cc | 6 ++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.clang-format b/.clang-format index 4a6e50a..3241cee 100644 --- a/.clang-format +++ b/.clang-format @@ -49,7 +49,7 @@ BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeColon BreakAfterJavaFieldAnnotations: false BreakStringLiterals: true -ColumnLimit: 80 +ColumnLimit: 120 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false ConstructorInitializerAllOnOneLineOrOnePerLine: false diff --git a/02_Basics/CharConverter/Exercise/lib.cc b/02_Basics/CharConverter/Exercise/lib.cc index 359d655..2a20374 100644 --- a/02_Basics/CharConverter/Exercise/lib.cc +++ b/02_Basics/CharConverter/Exercise/lib.cc @@ -2,28 +2,45 @@ bool is_numeric(const char character) { + return (character>='0' && character<='9') ? true : false; } bool is_alpha(const char character) { + return (is_upper_case(character) || is_lower_case(character)); } bool is_alpha_numeric(const char character) { + return (is_alpha(character) || is_numeric(character)); } bool is_upper_case(const char character) { + return (character>='A' && character<='Z'); } bool is_lower_case(const char character) { + return (character>='a' && character<='z'); } char to_upper_case(const char character) { + if (is_lower_case(character)) + { + return character - 32; + } + + return character; } char to_lower_case(const char character) { + if (is_upper_case(character)) + { + return character + 32; + } + + return character; } diff --git a/02_Basics/TimeConverter/Exercise/lib.cc b/02_Basics/TimeConverter/Exercise/lib.cc index 7644b72..8cf91e6 100644 --- a/02_Basics/TimeConverter/Exercise/lib.cc +++ b/02_Basics/TimeConverter/Exercise/lib.cc @@ -4,24 +4,30 @@ float convert_milliseconds_to_seconds(const float milliseconds) { + return milliseconds/1000; } float convert_seconds_to_minutes(const float seconds) { + return seconds/60; } float convert_minutes_to_hours(const float minutes) { + return minutes/60; } float convert_milliseconds_to_minutes(const float milliseconds) { + return convert_seconds_to_minutes(convert_milliseconds_to_seconds(milliseconds)); } float convert_milliseconds_to_hours(const float milliseconds) { + return convert_minutes_to_hours(convert_milliseconds_to_minutes(milliseconds)); } float convert_seconds_to_hours(const float seconds) { + return convert_minutes_to_hours(convert_seconds_to_minutes(seconds)); } From 5cf1bb6ea18aa4861ce61b08147effe71c371044 Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sat, 25 Jan 2025 22:38:26 +0100 Subject: [PATCH 2/7] erster Versuch --- 02_Basics/IntCalculator/Exercise/lib.cc | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/02_Basics/IntCalculator/Exercise/lib.cc b/02_Basics/IntCalculator/Exercise/lib.cc index 21f9e21..5ec009b 100644 --- a/02_Basics/IntCalculator/Exercise/lib.cc +++ b/02_Basics/IntCalculator/Exercise/lib.cc @@ -4,12 +4,45 @@ std::uint32_t modulo(const std::uint32_t number_a, const std::uint32_t number_b) { + if (number_b > 0) + { + return number_a % number_b; + } + else return 0; } std::uint32_t sum_of_digits(std::uint32_t number) { + if (number==0) + { + return 1; + } + + uint32_t digits = 1; + uint32_t number_loop = number; + do + { + digits++; + number_loop/=10; + }while((number_loop/10) != 0); + + return digits; + } std::uint32_t cross_sum(std::uint32_t number) { + uint32_t cross_sumvar = 0; + uint32_t number_loop = number; + + do + { + if (number_loop%10 != 0) + { + cross_sumvar+=number_loop%10; + } + number_loop/=10; + }while ((number_loop/10) != 0 || number_loop%10); + + return cross_sumvar; } From c275403ab8c06a3f1ca2314e756aa3462ffa1735 Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sat, 25 Jan 2025 23:08:36 +0100 Subject: [PATCH 3/7] finale Version --- 02_Basics/IntCalculator/Exercise/lib.cc | 29 +++++++++++-------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/02_Basics/IntCalculator/Exercise/lib.cc b/02_Basics/IntCalculator/Exercise/lib.cc index 5ec009b..ff57126 100644 --- a/02_Basics/IntCalculator/Exercise/lib.cc +++ b/02_Basics/IntCalculator/Exercise/lib.cc @@ -11,38 +11,35 @@ std::uint32_t modulo(const std::uint32_t number_a, const std::uint32_t number_b) else return 0; } -std::uint32_t sum_of_digits(std::uint32_t number) +std::uint32_t sum_of_digits(const std::uint32_t number) { - if (number==0) + /* if (number==0) { return 1; - } + }*/ - uint32_t digits = 1; - uint32_t number_loop = number; + std::uint32_t digits = 0; + std::uint32_t number_loop = number; do { digits++; - number_loop/=10; - }while((number_loop/10) != 0); + number_loop /= 10; + }while(number_loop > 0); return digits; } -std::uint32_t cross_sum(std::uint32_t number) +std::uint32_t cross_sum(const std::uint32_t number) { - uint32_t cross_sumvar = 0; - uint32_t number_loop = number; + std::uint32_t cross_sumvar = 0; + std::uint32_t number_loop = number; - do + while (number_loop>0) { - if (number_loop%10 != 0) - { - cross_sumvar+=number_loop%10; - } + cross_sumvar+=number_loop%10; number_loop/=10; - }while ((number_loop/10) != 0 || number_loop%10); + } return cross_sumvar; } From 74e286b7e0c8185cf8c8456c50cd7e8c47289bed Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sun, 26 Jan 2025 10:39:36 +0100 Subject: [PATCH 4/7] ohne zahl.0 --- 02_Basics/MathCalculator/Exercise/lib.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/02_Basics/MathCalculator/Exercise/lib.cc b/02_Basics/MathCalculator/Exercise/lib.cc index a5a7c9a..fdee4a5 100644 --- a/02_Basics/MathCalculator/Exercise/lib.cc +++ b/02_Basics/MathCalculator/Exercise/lib.cc @@ -5,8 +5,31 @@ double calculate_pi(const std::uint32_t num_iterations) { + double calculate=0; + + for (std::uint32_t n = 0; n <= num_iterations; n++) + { + calculate += ((1/(4*n+1)) - (1/(4*n+3))); + } + calculate*=4; + return calculate; } void print_dec_to_bin(std::uint8_t value) { + std::uint32_t binary=0; + while(value>0) + { + if (value%2 == 0) + { + binary*=10; + } + else + { + binary+=1; + } + value/=2; + } + + std::cout << binary; } From 4898663e21e5c4a82d1e6d2a7f8b0c486f5aaa5d Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sun, 26 Jan 2025 10:42:42 +0100 Subject: [PATCH 5/7] mit zahl.0 --- 02_Basics/MathCalculator/Exercise/lib.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_Basics/MathCalculator/Exercise/lib.cc b/02_Basics/MathCalculator/Exercise/lib.cc index fdee4a5..db01de2 100644 --- a/02_Basics/MathCalculator/Exercise/lib.cc +++ b/02_Basics/MathCalculator/Exercise/lib.cc @@ -9,7 +9,7 @@ double calculate_pi(const std::uint32_t num_iterations) for (std::uint32_t n = 0; n <= num_iterations; n++) { - calculate += ((1/(4*n+1)) - (1/(4*n+3))); + calculate += ((1.0/(4.0*n+1.0)) - (1.0/(4.0*n+3.0))); } calculate*=4; return calculate; From 8a8f1020b09b172a174c7b68c84b0f2195d14fd0 Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sun, 26 Jan 2025 13:33:29 +0100 Subject: [PATCH 6/7] =?UTF-8?q?Endg=C3=BCltige=20Fassung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_Basics/MathCalculator/Exercise/lib.cc | 22 +++++++++++----------- 02_Basics/MathCalculator/Exercise/main.cc | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/02_Basics/MathCalculator/Exercise/lib.cc b/02_Basics/MathCalculator/Exercise/lib.cc index db01de2..55d7314 100644 --- a/02_Basics/MathCalculator/Exercise/lib.cc +++ b/02_Basics/MathCalculator/Exercise/lib.cc @@ -9,27 +9,27 @@ double calculate_pi(const std::uint32_t num_iterations) for (std::uint32_t n = 0; n <= num_iterations; n++) { - calculate += ((1.0/(4.0*n+1.0)) - (1.0/(4.0*n+3.0))); + calculate += (( 1.0 / (4.0 * n + 1.0) ) - ( 1.0 / (4.0 * n + 3.0) )); } - calculate*=4; - return calculate; + return calculate*4; } void print_dec_to_bin(std::uint8_t value) { - std::uint32_t binary=0; - while(value>0) + std::cout << "Die Dezimalzahl : " << static_cast(value) << " in binär ist : 0b"; + for (std::int8_t exponent = 7; exponent >= 0; exponent--) { - if (value%2 == 0) + std::uint8_t exponenti8 = static_cast(std::pow(2,exponent)); + + if (value >= exponenti8) { - binary*=10; + std::cout << "1"; + value -= exponenti8; } else { - binary+=1; + std::cout << "0"; } - value/=2; } - - std::cout << binary; + std::cout << "\n\n"; } diff --git a/02_Basics/MathCalculator/Exercise/main.cc b/02_Basics/MathCalculator/Exercise/main.cc index d82535d..d90b2f4 100644 --- a/02_Basics/MathCalculator/Exercise/main.cc +++ b/02_Basics/MathCalculator/Exercise/main.cc @@ -15,8 +15,8 @@ int main() double pi_calculated = calculate_pi(num_iterations); std::cout << std::setprecision(30); - std::cout << "pi (calculated): " << pi_calculated << '\n'; - std::cout << "pi (correct): " << pi << '\n'; + std::cout << "pi (calculated): \t" << pi_calculated << '\n'; + std::cout << "pi (correct): \t\t" << pi << '\n'; std::uint8_t dec = 0b10001110; print_dec_to_bin(dec); From 9e166126e81cdf11c64bae249b519892915b7341 Mon Sep 17 00:00:00 2001 From: CharlesBronson72 Date: Sun, 9 Feb 2025 17:10:01 +0100 Subject: [PATCH 7/7] 03 Array und Pointer beendet --- 03_ArrayPointer/AlgoLib/Exercise/lib.cc | 46 +++++++++ 03_ArrayPointer/ArrayLibrary/Exercise/lib.cc | 40 ++++++++ 03_ArrayPointer/StringLibrary/Exercise/lib.cc | 95 +++++++++++++++---- .../StringLibrary/Exercise/main.cc | 12 ++- 4 files changed, 172 insertions(+), 21 deletions(-) diff --git a/03_ArrayPointer/AlgoLib/Exercise/lib.cc b/03_ArrayPointer/AlgoLib/Exercise/lib.cc index 69328f9..25f1953 100644 --- a/03_ArrayPointer/AlgoLib/Exercise/lib.cc +++ b/03_ArrayPointer/AlgoLib/Exercise/lib.cc @@ -7,22 +7,68 @@ bool all_of(const std::int32_t *array, const std::size_t length, const std::int32_t value) { + if (array!=nullptr && length>0) + { + std::int32_t counttruevalue = 0; + for (std::int32_t i = 0; i < length; i++) + { + if (array[i] == value) counttruevalue++; + } + + return ((counttruevalue==length-1) ? (true):(false)); + } + + return false; } bool any_of(const std::int32_t *array, const std::size_t length, const std::int32_t value) { + if (array!=nullptr && length>0) + { + for (std::int32_t i = 0; i < length; i++) + { + if (array[i] == value) return true; + } + + return false; + } + + return false; } bool none_of(const std::int32_t *array, const std::size_t length, const std::int32_t value) { + if (array!=nullptr && length>0) + { + for (std::int32_t i = 0; i < length; i++) + { + if (array[i] == value) return false; + } + + return true; + } + + return false; } std::size_t count(const std::int32_t *array, const std::size_t length, const std::int32_t value) { + if (array!=nullptr && length>0) + { + std::int32_t counttruevalue = 0; + for (std::int32_t i = 0; i < length; i++) + { + if (array[i] == value) counttruevalue++; + } + + return counttruevalue; + } + + return 100; } diff --git a/03_ArrayPointer/ArrayLibrary/Exercise/lib.cc b/03_ArrayPointer/ArrayLibrary/Exercise/lib.cc index 6ca288e..75bf874 100644 --- a/03_ArrayPointer/ArrayLibrary/Exercise/lib.cc +++ b/03_ArrayPointer/ArrayLibrary/Exercise/lib.cc @@ -6,12 +6,52 @@ void remove_duplicates(std::int32_t *array, std::size_t &length) { + if (array == nullptr || length < 2) + { + return; + } + + for (std::size_t i = 0; i < length; i++) //äußere Schleife, äußeres Schleifenelement welches gerade verglichen wird + { + for (std::size_t j = i + 1; j < length; + j++) //innere Schleife, Elemente werden mit aüßerem Schleifenelement verglichen + { + if (array[i] == array[j]) //wenn Elemente gleich, dann length-- und alle nach links verschieben + { + length--; + for (std::size_t k = j; k < length; k++) + { + array[k] = array[k + 1]; + } + } + } + } } void rotate_left(std::int32_t *array, std::size_t length) { + if (array == nullptr || length < 2) + { + return; + } + auto memory = array[0]; + for (std::size_t i = 0; i < length - 1; i++) + { + array[i] = array[i + 1]; + } + array[length - 1] = memory; } void rotate_right(std::int32_t *array, std::size_t length) { + if (array == nullptr || length < 2) + { + return; + } + auto memory = array[length - 1]; + for (std::size_t i = length - 1; i > 0; i--) + { + array[i] = array[i - 1]; + } + array[0] = memory; } diff --git a/03_ArrayPointer/StringLibrary/Exercise/lib.cc b/03_ArrayPointer/StringLibrary/Exercise/lib.cc index 39eb4b2..4491df3 100644 --- a/03_ArrayPointer/StringLibrary/Exercise/lib.cc +++ b/03_ArrayPointer/StringLibrary/Exercise/lib.cc @@ -59,16 +59,6 @@ char to_upper_case(const char character) return character; } -char to_upper_case_(const char character) -{ - if (is_lower_case(character)) - { - return character - 32; - } - - return character; -} - char to_lower_case(const char character) { if (is_upper_case(character)) @@ -79,30 +69,97 @@ char to_lower_case(const char character) return character; } -char to_lower_case_(const char character) + +/** END PREV FUNCS **/ + +char *to_upper_case(char *text) { - if (is_upper_case(character)) + if (text == nullptr) { - return character + 32; + return nullptr; } - return character; -} + auto *currenttext = new char[static_cast(string_length(text))]; -/** END PREV FUNCS **/ + int length = 0; + while (*(text + length) != '\0') + { + *(currenttext + length) = *(text + length); + length++; + } -char *to_upper_case(char *text) -{ + length = 0; + while (*(currenttext + length) != '\0') + { + if (is_lower_case(*(currenttext + length))) + { + *(currenttext + length) = to_upper_case(*(currenttext + length)); + } + length++; + } + + return currenttext; } char *to_lower_case(char *text) { + if (text == nullptr) + { + return nullptr; + } + + auto *currenttext = new char[static_cast(string_length(text))]; + + int length = 0; + while (*(text + length) != '\0') + { + *(currenttext + length) = *(text + length); + length++; + } + + length = 0; + while (*(currenttext + length) != '\0') + { + if (is_upper_case(*(currenttext + length))) + { + *(currenttext + length) = to_lower_case(*(currenttext + length)); + } + length++; + } + + + return currenttext; } -std::size_t string_length(char *text) +std::size_t string_length(const char *text) { + if (text == nullptr) + { + return 0; + } + std::size_t counter = 0; + while (*text != '\0') + { + text++; + counter++; + } + return counter; } bool string_equal(const char *string1, const char *string2) { + if (string1 == nullptr || string2 == nullptr) + { + return false; + } + while (*string1 != '\0' || *string2 != '\0') + { + if (*string1 != *string2) + { + return false; + } + string1++; + string2++; + } + return true; } diff --git a/03_ArrayPointer/StringLibrary/Exercise/main.cc b/03_ArrayPointer/StringLibrary/Exercise/main.cc index 5f34512..1deffd2 100644 --- a/03_ArrayPointer/StringLibrary/Exercise/main.cc +++ b/03_ArrayPointer/StringLibrary/Exercise/main.cc @@ -9,14 +9,22 @@ void test_cases(); int main() { char in_text[50]{}; + char copy_text[50]{}; char compare_text1[50]{"jan"}; char compare_text2[50]{"ja"}; std::cout << "Please enter any text: "; std::cin >> in_text; - std::cout << "to_upper_case: " << to_upper_case(in_text) << '\n'; - std::cout << "to_lower_case: " << to_lower_case(in_text) << '\n'; + char *toupca = to_upper_case(in_text); + std::cout << "to_upper_case: " << toupca << '\n'; + delete toupca; + toupca = nullptr; + char *toloca = to_lower_case(in_text); + std::cout << "to_lower_case: " << toloca << '\n'; + delete toloca; + toloca = nullptr; + std::cout << "origin: " << in_text << '\n'; std::cout << "string_length: " << string_length(in_text) << '\n'; std::cout << std::boolalpha; std::cout << "jan == jan: " << string_equal(in_text, compare_text1) << '\n';