diff --git a/Control-works/Control-work-No.1/Rewriting/Task_1/src/Fibonacci.c b/Control-works/Control-work-No.1/Rewriting/Task_1/src/Fibonacci.c new file mode 100644 index 0000000..1538fc6 --- /dev/null +++ b/Control-works/Control-work-No.1/Rewriting/Task_1/src/Fibonacci.c @@ -0,0 +1,17 @@ +#include + +int main() { + int num1 = 1, num2 = 1, result = 0, sum = 0; + + for (int i = 0; result <= 1000000; i++) { + result = num1 + num2; + num1 = num2; + num2 = result; + + if (result % 2 == 0) { + sum = sum + result; + } + } + + printf("Сумма чётных чисел Фибоначчи, не превосходящих миллиона: %d", sum); +} diff --git a/Control-works/Control-work-No.1/Rewriting/Task_2/src/Palindrome.c b/Control-works/Control-work-No.1/Rewriting/Task_2/src/Palindrome.c new file mode 100644 index 0000000..3c5d7ab --- /dev/null +++ b/Control-works/Control-work-No.1/Rewriting/Task_2/src/Palindrome.c @@ -0,0 +1,50 @@ +#include +#include + +int main() { + char str[1000]; + printf("Введите строку (на английском): "); + fgets(str, sizeof(str), stdin); + + // Убираем символ новой строки + str[strcspn(str, "\n")] = '\0'; + + int left = 0; + int right = strlen(str) - 1; + int is_palindrome = 1; + + while (left < right) { + // Пропускаем пробелы слева + while (left < right && str[left] == ' ') { + left++; + } + + // Пропускаем пробелы справа + while (left < right && str[right] == ' ') { + right--; + } + + // Если после пропуска пробелов указатели встретились - выходим + if (left >= right) { + break; + } + + // Сравниваем символы с учетом регистра + if (str[left] != str[right]) { + is_palindrome = 0; + break; + } + + // Двигаем указатели к центру + left++; + right--; + } + + if (is_palindrome) { + printf("Строка является палиндромом.\n"); + } else { + printf("Строка не является палиндромом.\n"); + } + + return 0; +} diff --git a/Control-works/Control-work-No.1/Rewriting/Task_3/src/Sorting.c b/Control-works/Control-work-No.1/Rewriting/Task_3/src/Sorting.c new file mode 100644 index 0000000..1445f28 --- /dev/null +++ b/Control-works/Control-work-No.1/Rewriting/Task_3/src/Sorting.c @@ -0,0 +1,55 @@ +#include + +// Функция для обмена двух элементов +void swap(int *a, int *b) { + int temp = *a; + *a = *b; + *b = temp; +} + +// Гномья сортировка +void gnomeSort(int arr[], int n) { + int i = 1, j = 2; + + while (i < n) { + if (arr[i - 1] <= arr[i]) { // Если элементы в правильном порядке + i = j; + j = j + 1; + } else { // Если элементы в неправильном порядке + swap(&arr[i - 1], &arr[i]); + i = i - 1; + if (i == 0) { + i = j; + j = j + 1; + } + } + } +} + +// Функция для вывода массива +void printArray(int arr[], int n) { + for (int i = 0; i < n; i++) { + printf("%d ", arr[i]); + } + printf("\n"); +} + +int main() { + int arr[] = {4, 2, 10, 7, 3, 1, 9, 6, 5, 8}; + int length = sizeof(arr) / sizeof(arr[0]); + + printf("Исходный массив: "); + printArray(arr, length); + + // Копируем массив для двух разных сортировок + int arr1[length]; + for (int i = 0; i < length; i++) { + arr1[i] = arr[i]; + } + + gnomeSort(arr1, length); + printf("Отсортированый массив: "); + printArray(arr1, length); + + return 0; +} diff --git a/Control-works/Control-work-No.1/Task_1/Fibonacci.c b/Control-works/Control-work-No.1/Task_1/Fibonacci.c new file mode 100644 index 0000000..369834b --- /dev/null +++ b/Control-works/Control-work-No.1/Task_1/Fibonacci.c @@ -0,0 +1,60 @@ +#include + + + +int fibonacci(int count) +{ + int a = 1; + int b = 1; + int c = 0; + int n = 3; + + while(n <= count) + { + c = a + b; + a = b; + b = c; + n++; + } + + return c; +} + + +int main(void) +{ + int number; + + printf("Введите n: "); + scanf("%d", &number); + + if (number < 0) + { + printf("Число n не должно быть отритцательнвм\n"); + } + + else if (number == 0) + { + printf("Нулевого числа Фибоначи не существует\n"); + } + + else if (number == 1 | number == 2) + { + printf("Число %d: 1\n", number); + } + + else + { + if (number >= 47) + { + printf("Результат ниже может быть аномальным из-за использования типа int:\n"); + } + + int result = fibonacci(number); + printf("Число %d: %d\n", number, result); + } + + return 0; +} + + diff --git a/Control-works/Control-work-No.1/Task_2/Sorting-by-choice.c b/Control-works/Control-work-No.1/Task_2/Sorting-by-choice.c new file mode 100644 index 0000000..ad37b54 --- /dev/null +++ b/Control-works/Control-work-No.1/Task_2/Sorting-by-choice.c @@ -0,0 +1,38 @@ +#include + +void selection_sort(int array[], int length) +{ + for (int n = 0; n < length - 1; n++) + { + int min = n; + for (int j = n + 1; j < length; j++) + { + if (array[j] < array[min]) + { + min = j; + } + } + + int temp = array[n]; + array[n] = array[min]; + array[min] = temp; + } +} + +int main(void) +{ + int arr[10] = {124, 828, 643, 820, 572, 5735, 5902, 55, 90, 12}; + int l = sizeof(arr) / sizeof(arr[0]); + + + + selection_sort(arr, l); + + for (int i = 0; i < l; i++) + { + printf("%d ", arr[i]); + } + printf("\n"); + + return 0; +}