diff --git a/src/CodeStyle_lesson/fastPolynomialCalculation.c b/src/CodeStyle_lesson/fastPolynomialCalculation.c new file mode 100644 index 0000000..7fb3892 --- /dev/null +++ b/src/CodeStyle_lesson/fastPolynomialCalculation.c @@ -0,0 +1,12 @@ +#include +#include + +int main() +{ + int x = 0; + scanf("%d", &x); + int t = x * x; + int result = (t + x) * (t + 1) + 1; + printf("%d\n", result); + return 0; +} diff --git a/src/happy_tickets.c b/src/CodeStyle_lesson/happyTickets.c similarity index 93% rename from src/happy_tickets.c rename to src/CodeStyle_lesson/happyTickets.c index a997605..92c7ded 100644 --- a/src/happy_tickets.c +++ b/src/CodeStyle_lesson/happyTickets.c @@ -1,9 +1,11 @@ #include -int main() { +int main() +{ int count = 0; int sums[28] = { 0 }; // в массив будем заносить сколькими способами можно получить суммы от 0 до 27 for (int a = 0; a <= 9; a++) { + for (int b = 0; b <= 9; b++) { for (int c = 0; c <= 9; c++) { int sum = a + b + c; @@ -12,11 +14,10 @@ int main() { } } - for (int i = 0; i <= 27; i++) { + for (int i = 0; i <= 27; i++) count += sums[i] * sums[i]; // считаем сколькими разными способами можно получить одинаковые суммы первых трех и // последних трех цифр - } + printf("%d\n", count); return 0; } - diff --git a/src/CodeStyle_lesson/incompleteQuotient.c b/src/CodeStyle_lesson/incompleteQuotient.c new file mode 100644 index 0000000..eeafe85 --- /dev/null +++ b/src/CodeStyle_lesson/incompleteQuotient.c @@ -0,0 +1,40 @@ +#include +#include +#include + +int main() +{ + int a = 0; + int b = 0; + int howManyTimesBInA = 0; + scanf("%d %d", &a, &b); + + int underZero = false; // флаг, чтобы понять какие значения введены + // 0 - положит + if ((a * b) < 0) { + underZero = true; // впоследствии учтем, что ответ должен быть < 0 + } + + a = abs(a); + b = abs(b); + int rememberA = abs(a); + + if (b == 0) { + printf("devision by zero\n"); + return 1; + } + + while (a - b > 0) { + a = a - b; + howManyTimesBInA += 1; + } + if (b * howManyTimesBInA + a == rememberA) { + if (underZero == true) { + printf("%d\n", howManyTimesBInA * (-1) - 1); + } else { + printf("%d\n", howManyTimesBInA); + } + } + + return 0; +} diff --git a/src/CodeStyle_lesson/massiveOverturn.c b/src/CodeStyle_lesson/massiveOverturn.c new file mode 100644 index 0000000..81129e2 --- /dev/null +++ b/src/CodeStyle_lesson/massiveOverturn.c @@ -0,0 +1,43 @@ +#include +#include + +/* Суть алгоритма такая: берется элемент, стоящий на нулевом индексе в списке, заносится в отдельную переменную. + * Далее отдельным циклом все элементы кроме нулевого смещаются на одну позицию влево. + * В конце этого цикла переменная, с элементом, который мы запомнили в начале, ставится на последнюю позицию. + * И делается это все ровно m раз. + * Для наглядности, что алгоритм работает, я заполнила его натуральными числами, упорядоченными по возрастанию. + * если у нас было [1, 2, 3, 4, 5] и m = 3 n = 2, то в конце программы список примет вид [4, 5, 1, 2, 3], + * то есть конец поменялся с началом. + */ + +int main() +{ + int n = 0; // длина конца + int m = 0; // длина начала + scanf("%d %d", &n, &m); // я так поняла, что пользователь сам вводит длину массива + + int *list = calloc(n+m, sizeof(int)); + for (int i = 0; i < m + n; i++) { + list[i] = i + 1; // заполняем массив значениями, чтобы в нем хранилось что-то упорядоченное, для наглядности, что нужный порядок сохраняется + } + int fromBeginingToEnd = 0; + for (int i = 0; i < m; i++) { + fromBeginingToEnd = list[0]; + for (int j = 1; j <= m + n - 1; j++) { + list[j - 1] = list[j]; + } + list[m + n - 1] = fromBeginingToEnd; + } + int a = 0; + for (int i = 0; i < m + n; i++) { + + if (i == m + n - 1) { + printf("%d\n", list[i]); + } else { + printf("%d", list[i]); + } + } + free(list); + return 0; +} + diff --git a/src/Compilation_process/bracket_balance.c b/src/Compilation_process/bracket_balance.c new file mode 100644 index 0000000..07e5f83 --- /dev/null +++ b/src/Compilation_process/bracket_balance.c @@ -0,0 +1,56 @@ +#include +#include +#include + +int main() +{ + int stek[100]; // сделаем большой стек состоящий из 100 нулей + char string[100]; // строка из 100 символов + scanf("%s", string); // ввели строку (огранчение 100 символов) + + int count = 0; // счетчик того, сколько позиций занято в стеке + char str1; // здесь будут символы из строки + char str2 = '('; + char str3 = ')'; + + int everything_ok = 1; // флаг, что все скобки пока идут правильно + + for (int i = 0; i < 100; i++) // перебор символов введенной строки + { + str1 = string[i]; + + if (str1 == str2) // Ищем окрывающие скобки + { + stek[count] = 2; // пусть 2 - это открывающая скобка + count += 1; + } + + else if (str1 == str3) // если скобка закрывающаяся + { + if (stek[count - 1] == 2) // то все ок + { + stek[count - 1] = 0; + count -= 1; + // этими действиями мы убрали закрытые скобки, будто их и не было + } else { + + everything_ok = 0; + break; + } + } + } + // Если скобочная последовательность правильная, то стек в конце будет состоять только из нулей + if (everything_ok == 1 && stek[0] == 2) { + printf("Скобочная последовательность неправильная\n"); + } + + else if (everything_ok == 1) { + printf("Скобочная последовательность правильная\n"); + } + + else { + printf("Скобочная последовательность неправильная\n"); + } + + return 0; +} diff --git a/src/Compilation_process/one_string_in_another.c b/src/Compilation_process/one_string_in_another.c new file mode 100644 index 0000000..73aa196 --- /dev/null +++ b/src/Compilation_process/one_string_in_another.c @@ -0,0 +1,30 @@ +#include +#include + +int main() +{ + char list_s[] = "hellohellhellolllhello"; + char list_s1[] = "hello"; + + size_t lenS = sizeof(list_s) / sizeof(char); + size_t lenS1 = sizeof(list_s1) / sizeof(char) - 1; // так как последний символ нулевой + + int count = 0; // счетчик вхождений + for (int i = 0; i < lenS; i++) // i - индекс того эл-та с которого будем рассматривать строку s + { + int flag = 1; // Это значит, что все символы строк совпадают, но если хотя бы один символ будет отличаться, будем менять на 0 и выходить из цикла + for (int j = 0; j < lenS1; j++) { + if (list_s[i + j] != list_s1[j]) { + flag = 0; // опа, строчки отличаются + break; // собираем вещи и уходим + } + } + if (flag == 1) // все символы совпали + { + count += 1; + } + } + printf("%d\n", count); + + return 0; +} diff --git a/src/Compilation_process/zeros_in_massive.c b/src/Compilation_process/zeros_in_massive.c new file mode 100644 index 0000000..aecded7 --- /dev/null +++ b/src/Compilation_process/zeros_in_massive.c @@ -0,0 +1,17 @@ +#include + +int main() +{ + // пусть массив задан в программе + int list[] = { 0, 1, 3, 0, 6, 0, 7, 4, 6, 2, 0, 0 }; + int count = 0; + size_t length = sizeof(list) / sizeof(int); + + for (int i = 0; i < length; i++) { + if (list[i] == 0) { + count += 1; + } + } + printf("%d", count); + return 0; +} diff --git a/src/division_without_devision.c b/src/division_without_devision.c deleted file mode 100644 index 61babcb..0000000 --- a/src/division_without_devision.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include - -int main() { - int a; - int b; - int r = 0; // сколько раз вмещается b в a - scanf("%d %d", &a, &b); - int remember_a = a; - int under_zero = 0; // флаг, чтобы понять какие значения введены - // 0 - положит - if ((a < 0 | b < 0) && !(a < 0 && b < 0)) { - under_zero = 1; // впоследствии учтем, что ответ должен быть < 0 - } - - a = abs(a); - b = abs(b); - remember_a = abs(remember_a); - - if (b == 0) { - printf("devision by zero\n"); - } - - else { - while (a - b > 0) { - a = a - b; - r += 1; - } - if (b * r + a == remember_a) { - if (under_zero == 1) { - printf("%d\n", r * (-1) - 1); - } else { - printf("%d\n", r); - } - } - } - - return 0; -} diff --git a/src/file_to_be.c b/src/file_to_be.c deleted file mode 100644 index e69de29..0000000