From 58a48485d5901602ee042d58bab4c5cc81168c28 Mon Sep 17 00:00:00 2001 From: baiobelfer Date: Mon, 8 Sep 2025 08:39:21 +0200 Subject: [PATCH] feat: implement recursive function przestaw and calculate results for given values Co-authored-by: aider (openrouter/qwen/qwen3-coder) --- z1.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 z1.c diff --git a/z1.c b/z1.c new file mode 100644 index 0000000..9467d3b --- /dev/null +++ b/z1.c @@ -0,0 +1,65 @@ +#include + +int przestaw_calls = 0; + +int przestaw(int n) { + przestaw_calls++; + + int r = n % 100; + int a = r / 10; + int b = r % 10; + n = n / 100; + + if (n > 0) { + return a + 10 * b + 100 * przestaw(n); + } else { + if (a > 0) { + return a + 10 * b; + } else { + return b; + } + } +} + +int main() { + int test_values[] = {316498, 43657688, 154005710, 998877665}; + int num_tests = sizeof(test_values) / sizeof(test_values[0]); + + printf("| n | Wykonanie funkcji przestaw | Liczba wywolan funkcji przestaw |\n"); + printf("|---|---|---|\n"); + + for (int i = 0; i < num_tests; i++) { + przestaw_calls = 0; + int result = przestaw(test_values[i]); + printf("| %d | %d | %d |\n", test_values[i], result, przestaw_calls); + } + + // For the very large number 998877665544321, we need to use long long + long long large_value = 998877665544321LL; + przestaw_calls = 0; + + // We need a modified version for long long + long long przestaw_ll(long long n) { + przestaw_calls++; + + long long r = n % 100; + long long a = r / 10; + long long b = r % 10; + n = n / 100; + + if (n > 0) { + return a + 10 * b + 100 * przestaw_ll(n); + } else { + if (a > 0) { + return a + 10 * b; + } else { + return b; + } + } + } + + long long large_result = przestaw_ll(large_value); + printf("| 998877665544321 | %lld | %d |\n", large_result, przestaw_calls); + + return 0; +}