diff --git a/hw2/CMakeLists.txt b/hw2/CMakeLists.txt new file mode 100644 index 0000000..3bf639e --- /dev/null +++ b/hw2/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.25) + +project(hw2 C) + +add_executable(formula_for_2_multi formula_for_2_multi.c) + +add_executable(incom_priv incom_priv.c) + +add_executable(lucky_tick lucky_tick.c) + +add_executable(rerran_segm rerran_segm.c) \ No newline at end of file diff --git a/hw2/formula_for_2_multi.c b/hw2/formula_for_2_multi.c new file mode 100644 index 0000000..276cd4f --- /dev/null +++ b/hw2/formula_for_2_multi.c @@ -0,0 +1,16 @@ +#include + +int main(int argc, char** argv) +{ + int x = 0; + printf("Введите значение x: "); + scanf("%d", &x); + + // квадрат числа + int t = x * x; + + // сама формула + int formula = (t + 1) * (t + x) + 1; + printf("%d\n", formula); + return 0; +} diff --git a/hw2/incom_priv.c b/hw2/incom_priv.c new file mode 100644 index 0000000..d0fa069 --- /dev/null +++ b/hw2/incom_priv.c @@ -0,0 +1,45 @@ +#include + +int main(int argc, char** argv) +{ + int a = 0; + int b = 0; + printf("Введите число a: "); + scanf("%d", &a); + printf("Введите число b: "); + scanf("%d", &b); + + if (b == 0) { + printf("Неполное частное от деления целого числа на ноль не определено\n"); + return 0; + } + if (a == 0) { + printf("Неполное частное: 0"); + return 0; + } + // счетчик для неполного частного + int incomp = 0; + + // коэф прибавляемый к счетчику + int count = 1; + + if (a < 0) { + a *= -1; + count *= -1; + incomp -= 1; + } + if (b < 0) { + b *= -1; + count *= -1; + incomp *= -1; + } + + // вычитаем из a число b до тех пор пока b не станет больше а. И прибавляем к счетчику 1 или -1. + while (a > b) { + a = a - b; + incomp += count; + } + + printf("Неполное частное: %d\n", incomp); + return 0; +} diff --git a/hw2/lucky_tick.c b/hw2/lucky_tick.c new file mode 100644 index 0000000..0d72ac6 --- /dev/null +++ b/hw2/lucky_tick.c @@ -0,0 +1,20 @@ +#include +#include +#include + +int main(int argc, char** argv) +{ + int array[28] = { 0 }; + + for (int num = 0; num < 1000; num++) { + int sumNumber = (num / 10 % 10) + num / 100 + num % 10; + array[sumNumber]++; + } + + int sum = 0; + for (int ind = 0; ind < 28; ind++) { + sum += (array[ind] * array[ind]); + } + printf("Количество счасливых билетов: %d\n", sum); + return 0; +} diff --git a/hw2/rerran_segm.c b/hw2/rerran_segm.c new file mode 100644 index 0000000..a1070e3 --- /dev/null +++ b/hw2/rerran_segm.c @@ -0,0 +1,37 @@ +#include +#include + +int main(int argc, char** argv) +{ + int m = 0; + int n = 0; + printf("Введите длину начала: "); + scanf("%d", &m); + printf("Введите длину конца: "); + scanf("%d", &n); + + // создание динамического массива + int lenght = m + n; + int* list = (int*)malloc(lenght * sizeof(int)); + for (int i = 1; i < m + n + 1; i++) { + list[i - 1] = i; + } + + // сдвиг отрезка m на 1 n раз + // каждый следущий элемент после отрезка m передвигает в начало массива + for (int step1 = 0; step1 < n; step1++) { + for (int step2 = m + step1; step2 > step1; step2--) { + int temprery = list[step2]; + list[step2] = list[step2 - 1]; + list[step2 - 1] = temprery; + } + } + + // вывод массива + for (int i = 0; i < lenght; i++) { + printf(" %d", list[i]); + } + printf("\n"); + free(list); + return 0; +}