Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/CodeStyle_lesson/fastPolynomialCalculation.c
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачтено.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#include <stdio.h>
#include <stdlib.h>

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;
}
9 changes: 5 additions & 4 deletions src/happy_tickets.c → src/CodeStyle_lesson/happyTickets.c
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачтено.

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
#include <stdio.h>

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;
Expand All @@ -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;
}

40 changes: 40 additions & 0 deletions src/CodeStyle_lesson/incompleteQuotient.c
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачтено.

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
int a = 0;
int b = 0;
int howManyTimesBInA = 0;
scanf("%d %d", &a, &b);

int underZero = false; // флаг, чтобы понять какие значения введены
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь тоже не заметил. Логические переменные принято называть в стиле isUnderZero (а ещё корректнее isNegative)

// 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");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Оно, конечно, division, но это уже мелочи

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;
}
43 changes: 43 additions & 0 deletions src/CodeStyle_lesson/massiveOverturn.c
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Решение корректное. Хотя по асимптотике (либо уже было на дискретке, либо вот-вот будет на Python) не идеальное. При желании можно найти более эффективное решение. Будет зачтено при инициализации переменных и использовании \n

Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#include <stdio.h>
#include <stdlib.h>

/* Суть алгоритма такая: берется элемент, стоящий на нулевом индексе в списке, заносится в отдельную переменную.
* Далее отдельным циклом все элементы кроме нулевого смещаются на одну позицию влево.
* В конце этого цикла переменная, с элементом, который мы запомнили в начале, ставится на последнюю позицию.
* И делается это все ровно 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;
}

56 changes: 56 additions & 0 deletions src/Compilation_process/bracket_balance.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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;
}
30 changes: 30 additions & 0 deletions src/Compilation_process/one_string_in_another.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include <stdio.h>
#include <stdlib.h>

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;
}
17 changes: 17 additions & 0 deletions src/Compilation_process/zeros_in_massive.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <stdio.h>

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;
}
39 changes: 0 additions & 39 deletions src/division_without_devision.c

This file was deleted.

Empty file removed src/file_to_be.c
Empty file.