From dfc6e5988b8bc95410038cab0988737bf16047c0 Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Tue, 7 Oct 2025 20:50:06 +0000 Subject: [PATCH 1/2] Add homework optimal sort --- src/hw_Optimal_Sort/main.c | 25 +++++++++++++++++++++++++ src/hw_Optimal_Sort/sort.c | 16 ++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/hw_Optimal_Sort/main.c create mode 100644 src/hw_Optimal_Sort/sort.c diff --git a/src/hw_Optimal_Sort/main.c b/src/hw_Optimal_Sort/main.c new file mode 100644 index 0000000..ea4fa97 --- /dev/null +++ b/src/hw_Optimal_Sort/main.c @@ -0,0 +1,25 @@ +#include + +// Объявление функции +extern int sort_array(int array[], int count); + +// Основной код - объявление массива на 100 чисел, создание счетчика, чтобы знать со сколькими числами надо будет работать, чтение чисел через for с scanf и вывод +int main() { + int array[100]; + int count = 0; + + int i = 0; + while (i < 100 && scanf("%d", &array[i]) == 1) { + i++; + count++; + } + + int moved = sort_array(array, count); + + printf("Отсортированный массив:"); + for (int i = 0; i < count; i++) { + printf("%d ", array[i]); + } + printf("\n"); + return 0; +} diff --git a/src/hw_Optimal_Sort/sort.c b/src/hw_Optimal_Sort/sort.c new file mode 100644 index 0000000..b535d0e --- /dev/null +++ b/src/hw_Optimal_Sort/sort.c @@ -0,0 +1,16 @@ +int sort_array(int* array, int count) { + int moved_count = 0; + // сортировка пузырьком + for (int i = 0; i < count - 1; i++) { + for (int j = 0; j < count - i - 1; j++) { + if (array[j] > array[j + 1]) { + int temp = array[j]; + array[j] = array[j + 1]; + array[j + 1] = temp; + moved_count++; + } + } + } + + return moved_count; +} From fa6c3545826240f24290b78e092bdaff416fd3ee Mon Sep 17 00:00:00 2001 From: DolzhenkoAlexa Date: Fri, 17 Oct 2025 14:16:57 +0000 Subject: [PATCH 2/2] Added 2 files --- src/kr/diffPalindrome.c | 67 +++++++++++++++++++++++++++++++++++++++++ src/kr/max.c | 49 ++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 src/kr/diffPalindrome.c create mode 100644 src/kr/max.c diff --git a/src/kr/diffPalindrome.c b/src/kr/diffPalindrome.c new file mode 100644 index 0000000..2520787 --- /dev/null +++ b/src/kr/diffPalindrome.c @@ -0,0 +1,67 @@ +// +// Created by sasha on 17.10.2025. +// + +//Напечатать на экран все из диапазона [1;n], +//которые являются палиндромами в двоичной записи. Выводить в десятичной системе счисления. + +#include +#include + +int systemChangerTo2(int n) { + int binaryNum[1000]; //Массив для числа во вторичной + char charBinaryNum[1000]; // Массив для числа во вторичной, но в виде строки + int i = 0; + int len = 0; + + while (n > 0) { + binaryNum[i] = n % 2; + n = n / 2; + i++; + len = i; // Длина массива + } + + for (i = 0; i < len; i++) { + charBinaryNum[i] = binaryNum[i] + '0'; + } + + int left = 0; + int right = strlen(charBinaryNum) - 1; + + while (left <= right) { + if (charBinaryNum[left] == charBinaryNum[right]) { + left++; + right--; + } else { + return 0; + } + if (left > right) { + return 1; + } + } +} + + + + +int main(void) { + int n = 0; + + printf("Введите n \n"); + scanf("%d",&n); + + int arr[n]; + int num = 0; + + for (int i = 0; i < n; i++) { + arr[i] = num; + num++; + + if (systemChangerTo2(num) == 1) { + printf("%d\n", num); + } + } + + + return 0; +} diff --git a/src/kr/max.c b/src/kr/max.c new file mode 100644 index 0000000..11e420e --- /dev/null +++ b/src/kr/max.c @@ -0,0 +1,49 @@ +// +// В массиве целых чисел найти число, сумма цифр которого была бы наибольшей. +// Если таких чисел несколько, вывести на экран все эти числа. +// + +#include + +// Функция нахождения максимальной суммы +int finder(int arr[], int size) { + int sum = 0; + for (int i = 0; i < size; i++) { + int tempSum = 0; // Временная сумма для каждого отдельно взятого числа + int temp = arr[i]; + + while (temp / 10 != 0) { // "Резатель числа", режем - пока оно не станет нулевым, прибавляем хвостик к сумме + tempSum += (temp % 10); + temp = temp/10; + printf("Sum %d\n", tempSum); + printf("%d \n", temp); + } + tempSum = temp + tempSum; + printf("Sum %d\n", tempSum); + + if (tempSum > sum) { + sum = tempSum; + } + } + return sum; +} + +int main(void) { + int size = 0; + + printf("Введите колво чисел в массиве (len) \n"); + scanf("%d",&size); + + int arr[size]; + + printf("Введите сами числа в массив \n"); + for (int i = 0; i < size; i++) { + scanf("%d",&arr[i]); + } + + int maxSum = finder(arr, size); + + printf("\n"); + printf("Max sum of numbers %d", maxSum); + return 0; +}