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
9 changes: 9 additions & 0 deletions src/hw2_styleguide/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 4.0)
project(hw2_styleguide C)

set(CMAKE_C_STANDARD 17)

add_executable(array_swap array_swap.c)
add_executable(fast_multiplication fast_multiplication.c)
add_executable(happy_tickets happy_tickets.c)
add_executable(quotient quotient.c)
54 changes: 54 additions & 0 deletions src/hw2_styleguide/array_swap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#include <stdio.h>

// Функция для обращения порядка элементов в массиве
void reverser(int array[], int start, int end)
{
while (start < end) {
int temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
}


int main()
{
int m, n, arrayLen;

// Ввод размеров
printf("Введите m: \n");
scanf("%d", &m);
printf("Введите n: \n");
scanf("%d", &n);
arrayLen = m + n;
int array[arrayLen];

// Ввод элементов массива
printf("Введите элементы массива, в количестве m+n:\n");
for (int i = 0; i < arrayLen; i++) {
scanf("%d", &array[i]);
}

// Перестановка
// 1. Обращаем весь массив в обратный порядок.
reverser(array, 0, m + n - 1);
// 2. Обращаем первую часть
reverser(array, 0, n - 1);
// 3. Обращаем вторую часть
reverser(array, n, m + n - 1);

// Пример: 0 1 3 5 7 9 11 (m=3, n=4)
// 1. 11 9 7 5 3 1 0
// 2. Так как n=4, меняем первые 4 - 5 7 9 11
// 3. Так как m=3, то последние 3 - 0 1 3
// Итог: 5 7 9 11 0 1 3

// Вывод результата
printf("После перестановки: ");
for (int i = 0; i < arrayLen; i++) {
printf("%d ", array[i]);
}
return 0;
}
20 changes: 20 additions & 0 deletions src/hw2_styleguide/fast_multiplication.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include <stdio.h>
int formula(int a, int b) {
return (b + a + 1)*(b + 1) - b; // Сокращение начальной формулы до (х^2+x+1)*(x^2+1)-(x^2)
// Умножение 1: х^2.
// Умножение 2: Умножение скобочек
}

int main()
{
int x = 0;
printf("Введите значение х:\n");
scanf("%d", &x);
int xSquared = x * x;
int result = formula(x, xSquared);


// Вывод результата
printf("%d", result);
return 0;
}
25 changes: 25 additions & 0 deletions src/hw2_styleguide/happy_tickets.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdio.h>

int main()
{
int count[28] = {0};
// Считаем, сколько троек цифр имеют каждую сумму
for (int a = 0; a <= 9; a++) {
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
// увеличиваем на 1 значение ячейки массива под номером, равным сумме тройки
count[a + b + c]++;
}
}
}

int result = 0;
for (int sum = 0; sum <= 27; sum++) {
// Берем все 27 возможных "сумм"
// 27 потому что максимум 9+9+9=27
result = result + (count[sum] * count[sum]);
}
printf("Общее количество счастливых билетов со всеми суммами: %d\n", result);
return 0;
}

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

int findQuotient(int a, int b)
{
if (b == 0) {
printf("Нельзя делить на ноль!\n");
return 0;
}

int q = 0;
while ((q + 1) * abs(b) <= abs(a)) {
q++;
}

if (a * b < 0) {
return -q;
}
return q;
}

int main()
{
int a, b;
printf("Введите два целых a и b, чтобы найти q (a = b*q): \n");
scanf("%d %d", &a, &b);

int q = findQuotient(a, b);
if (b != 0) {
printf("Неполное частное от деления q: %d\n", q);
}
return 0;
}