diff --git a/test1/fibonacci/src/main.c b/test1/fibonacci/src/main.c new file mode 100644 index 0000000..8d46f26 --- /dev/null +++ b/test1/fibonacci/src/main.c @@ -0,0 +1,48 @@ +#include + +int fibonacciDigit(int n); + +int main() { + printf("%d\n", fibonacciDigit(7)); + printf("%d\n", fibonacciDigit(11)); + + return 0; +} + +int fibonacciDigit(int n) { + if (n <= 0) + return -1; + if (n == 1 || n == 2) + return 1; + + int currentPos = 2; + long long a = 1, b = 1; + + while (currentPos < n) { + long long next = a + b; + a = b; + b = next; + + long long temp = next; + int numDigits = 0; + while (temp > 0) { + numDigits++; + temp /= 10; + } + + if (currentPos + numDigits >= n) { + int leftSpace = n - currentPos - 1; + long long divisor = 1; + + for (int i = 0; i < numDigits - leftSpace - 1; i++) { + divisor *= 10; + } + + return (int)((next / divisor) % 10); + } + + currentPos += numDigits; + } + + return -1; +} diff --git a/test1/maxSum/src/main.c b/test1/maxSum/src/main.c new file mode 100644 index 0000000..c2ca0fb --- /dev/null +++ b/test1/maxSum/src/main.c @@ -0,0 +1,50 @@ +#include + +void printMax(int *numbers, const int size); + +int binaryDigitSum(int num); + +int main() { + int numbers[] = {15, 7, 3, 31, 63, 1, 255, 127, 85}; + const int size = sizeof(numbers) / sizeof(numbers[0]); + + printMax(numbers, size); + + return 0; +} + +void printMax(int *numbers, const int size) { + int maxSum = -1; + int maxNumbers[size]; + int count = 0; + + for (int i = 0; i < size; i++) { + int currentSum = binaryDigitSum(numbers[i]); + + if (currentSum > maxSum) { + maxSum = currentSum; + count = 0; + maxNumbers[count++] = numbers[i]; + } else if (currentSum == maxSum) + maxNumbers[count++] = numbers[i]; + } + + for (int i = 0; i < count; i++) + printf("%d ", maxNumbers[i]); + printf("\n"); +} + +int binaryDigitSum(int num) { + int sum = 0; + + if (num < 0) + num = -num; + + while (num > 0) { + sum += num % 2; + num = num / 2; + } + + return sum; +} + diff --git a/test1/selectionSort/src/main.c b/test1/selectionSort/src/main.c new file mode 100644 index 0000000..f51c3f7 --- /dev/null +++ b/test1/selectionSort/src/main.c @@ -0,0 +1,45 @@ +#include + +void selectionSort(int *arr, int n); + +void printArray(int *arr, int n); + +int main() { + int arr[] = {64, 25, 12, 22, 11}; + int n = sizeof(arr) / sizeof(arr[0]); + + printf("Initial array: "); + printArray(arr, n); + + selectionSort(arr, n); + + printf("Sorted array: "); + printArray(arr, n); + + return 0; +} + +void selectionSort(int *arr, int n) { + for (int i = 0; i < n - 1; ++i) { + int minIndex = i; + for (int j = i + 1; j < n; ++j) { + if (arr[j] < arr[minIndex]) { + minIndex = j; + } + } + + if (minIndex != i) { + int temp = arr[i]; + arr[i] = arr[minIndex]; + arr[minIndex] = temp; + } + } +} + +void printArray(int *arr, int n) { + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf("\n"); +} +