Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
44b09fc
Добавлена реазиция функции addition
Polina785643 Nov 25, 2025
7d9c0dd
Написана функция CharChanger
Polina785643 Nov 25, 2025
cb946d9
Косметические правки
Polina785643 Nov 26, 2025
94303df
Литералы cm in m, m in cm
Polina785643 Nov 26, 2025
ca2154d
Update rms.cpp
Polina785643 Nov 26, 2025
ef5b8ea
Добавлены остальные литералы для ft in cm m
Polina785643 Nov 26, 2025
f189669
Исправлена опечатка
Polina785643 Nov 26, 2025
1c58aed
Функция для расчета среднеквадратического значения
Polina785643 Nov 26, 2025
2da7917
Функция для вычисления корней квадратного уравнения
Polina785643 Nov 26, 2025
4240c90
Замена double на long double
Polina785643 Nov 26, 2025
3a5c4ca
Написана функция print_bits
Polina785643 Nov 27, 2025
11b8a81
Исправлен косяк
Polina785643 Nov 27, 2025
eac2189
Написана функция PrintCheckFlags
Polina785643 Nov 27, 2025
b1cb4fa
Убираем -0.0
Polina785643 Nov 27, 2025
ddbe982
Исправление строчные буквы преобразуются в заглавные
Polina785643 Nov 27, 2025
8a09583
Исправление заглавные буквы преобразуются в строчные
Polina785643 Nov 27, 2025
56b23ff
Правки
Polina785643 Nov 27, 2025
2aa9b6c
Обновление
Polina785643 Dec 3, 2025
3ca1f95
Добавлена реазиция функции addition
Polina785643 Nov 25, 2025
c7622ed
Написана функция CharChanger
Polina785643 Nov 25, 2025
c4e4c68
Косметические правки
Polina785643 Nov 26, 2025
651d799
Литералы cm in m, m in cm
Polina785643 Nov 26, 2025
9370099
Добавлены остальные литералы для ft in cm m
Polina785643 Nov 26, 2025
1d4b6a0
Исправлена опечатка
Polina785643 Nov 26, 2025
fd5954d
Функция для расчета среднеквадратического значения
Polina785643 Nov 26, 2025
baf58b9
Функция для вычисления корней квадратного уравнения
Polina785643 Nov 26, 2025
fe298d8
Замена double на long double
Polina785643 Nov 26, 2025
b9ba25e
Написана функция print_bits
Polina785643 Nov 27, 2025
60f0a46
Исправлен косяк
Polina785643 Nov 27, 2025
e9cd77e
Написана функция PrintCheckFlags
Polina785643 Nov 27, 2025
7a56e52
Убираем -0.0
Polina785643 Nov 27, 2025
dc72f51
Исправление строчные буквы преобразуются в заглавные
Polina785643 Nov 27, 2025
489e21e
Исправление заглавные буквы преобразуются в строчные
Polina785643 Nov 27, 2025
b26dd57
Правки
Polina785643 Nov 27, 2025
242f347
Обновление
Polina785643 Dec 7, 2025
476652f
Merge branch 'main' of github.com:psds-cpp/psds-cpp-2025
Polina785643 Dec 7, 2025
57da243
Добавить build-* в .gitignore и удалить build-папки из индекса
Polina785643 Dec 7, 2025
618d5e8
Обновление
Polina785643 Dec 7, 2025
453435f
Merge branch 'develop' of github.com:Polina785643/psds-cpp-2025 into …
Polina785643 Dec 7, 2025
1ce783f
Реализация функции ApplyOperations
Polina785643 Dec 7, 2025
806d00e
Реализация функции SwapPtr
Polina785643 Dec 7, 2025
5b6643e
Теперь функция шаблонная
Polina785643 Dec 7, 2025
4deb0c1
Добавление шаблонных функций
Polina785643 Dec 7, 2025
7f0d7e9
Переделаны теперь просто шаблонные функци
Polina785643 Dec 7, 2025
5d138c6
Переделаны теперь просто шаблонные функци
Polina785643 Dec 7, 2025
e4c03b1
Реализация функции PrintArray
Polina785643 Dec 7, 2025
7f6b951
Реализация функции FindLongestSubsequence
Polina785643 Dec 7, 2025
a43ba2d
Реализация функции FindLongestSubsequence
Polina785643 Dec 7, 2025
b1c3d79
Реализация функции PrintMemory
Polina785643 Dec 7, 2025
082a70d
Реализация функции FindLastElement
Polina785643 Dec 7, 2025
be4a097
добавлен аргумент по умолчанию
Polina785643 Dec 8, 2025
34be524
добавлен аргумент по умолчанию
Polina785643 Dec 8, 2025
47c8863
правки
Polina785643 Dec 8, 2025
8d94f4e
правки
Polina785643 Dec 8, 2025
ce178f3
перегрузка для double
Polina785643 Dec 8, 2025
0dec6e7
замена true на false
Polina785643 Dec 8, 2025
be0f5de
правка <= на <
Polina785643 Dec 8, 2025
d5a943a
Все латинские буквы преобразуются в прописные
Polina785643 Dec 8, 2025
dbc02cc
Добавлена 3 неделя
Polina785643 Dec 11, 2025
ffc22b2
решение конфликта rms.cpp
Polina785643 Dec 11, 2025
833b5c9
функция вычисление среднего и суммы квадратов отклонений
Polina785643 Dec 11, 2025
7b059fc
добавлена функция filter
Polina785643 Dec 11, 2025
28e4701
Добавлена функция range
Polina785643 Dec 11, 2025
5988c1a
Реализация функции MinMax
Polina785643 Dec 11, 2025
2532416
Реализация функции FindAll
Polina785643 Dec 11, 2025
9b09894
Добавлены операторы сравнения и конструктор
Polina785643 Dec 14, 2025
9aa937c
Решение enum_operators
Polina785643 Dec 14, 2025
f38590a
Решение os_overload
Polina785643 Dec 14, 2025
7a3a3c3
Реализация unique
Polina785643 Dec 14, 2025
6a38f83
Правка при возврате значения при побитовом И
Polina785643 Dec 14, 2025
83d2d16
Правка при возврате значения при побитовом И
Polina785643 Dec 14, 2025
a23cfaf
Правки в операторе побитового отрицания
Polina785643 Dec 14, 2025
d87efd8
Правки в операторе побитового отрицания
Polina785643 Dec 14, 2025
5212951
правка опечатки
Polina785643 Dec 14, 2025
245ab57
правка опечатки
Polina785643 Dec 14, 2025
2ce8537
правка опечатки
Polina785643 Dec 14, 2025
2d9231d
правки
Polina785643 Dec 14, 2025
6f00132
Поняла, что неправильно коммичу, больше так не буду. Теперь правильна…
Polina785643 Dec 17, 2025
66194ee
Доработана задача char_changer
Polina785643 Dec 17, 2025
c7c3995
Удалена лишяя переменная в char_changer
Polina785643 Dec 17, 2025
120c237
Удалена лишяя переменная в char_changer
Polina785643 Dec 17, 2025
6fd4b0c
Устранение конфликтов
Polina785643 Dec 17, 2025
8044070
Merge branch 'week_3' into week_4+week_3
Polina785643 Dec 18, 2025
84904f2
Обновление
Polina785643 Dec 20, 2025
9bc313d
Merge branch 'main' into week_4+week_3
Polina785643 Dec 20, 2025
d84a8b1
Merge branch 'main' of github.com:psds-cpp/psds-cpp-2025
Polina785643 Dec 25, 2025
bab1f41
Merge branch 'main' into week_4+week_3
Polina785643 Dec 25, 2025
3110598
Добавлена задача phasor
Polina785643 Dec 25, 2025
5626b1a
Исправлена опечатка
Polina785643 Dec 25, 2025
c664556
Добавлена задача
Polina785643 Dec 25, 2025
ca5c55b
Реализация класса queue
Polina785643 Dec 25, 2025
e3d2953
Вынесла методы класса
Polina785643 Dec 25, 2025
815d762
Правки с последовательностью
Polina785643 Dec 25, 2025
68c561d
Убраны assert
Polina785643 Dec 25, 2025
5737682
Добавлен конструктор от размера
Polina785643 Dec 25, 2025
97155bb
Добавлен конструктор от размера
Polina785643 Dec 25, 2025
5fd8081
Удален конструктор от размера и изменен TransferElements
Polina785643 Dec 25, 2025
c4912f8
Добавление класса ring_buffer
Polina785643 Dec 25, 2025
e813ba7
Добавлен класс stack
Polina785643 Dec 25, 2025
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
8 changes: 4 additions & 4 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ jobs:
echo "$changed_files"

tasks=("addition" "rms" "print_bits" "check_flags" "length_lit" "quadratic" "char_changer"
"swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array"
"data_stats" "unique" "range" "minmax" "find_all" "os_overload" "easy_compare" "filter" "enum_operators"
"stack" "queue" "ring_buffer" "phasor")
"swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array"
"data_stats" "easy_compare" "enum_operators" "filter" "find_all" "minmax" "os_overload" "range" "unique"
"phasor" "queue" "ring_buffer" "stack")

declare -i passed_count=0
declare -i failed_count=0
Expand Down Expand Up @@ -75,4 +75,4 @@ jobs:
else
echo "✅ All processed tasks passed!"
exit 0
fi
fi
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build-*/
a.out
*.out
4 changes: 2 additions & 2 deletions 01_week/tasks/addition/addition.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <cstdint>
#include <stdexcept>


//Функция, которая суммирует два числа
int64_t Addition(int a, int b) {
throw std::runtime_error{"Not implemented"};
return static_cast<int64_t>(a) + static_cast<int64_t>(b);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Лишний каст, второй операнд не следует приводить явно, так как он бы преобразовался с помощью неявного каста. Принято использовать такую возможность и не писать явный каст самостоятельно второй раз

}
105 changes: 101 additions & 4 deletions 01_week/tasks/char_changer/char_changer.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,104 @@
#include <cstddef>
#include <stdexcept>
#include <cctype>

/* Преобразует строку по правилам:
- Повторяющиеся символы (кроме пробелов) заменяются на символ+число повторений
- Цифры заменяются на '*'
- Все латинские буквы преобразуются в прописные
- Последовательные пробелы заменяются на разделитель
- Остальные символы заменяются на '_'
Возвращает новую длину строки */

size_t CharChanger(char array[], size_t size, char delimiter = ' ') {
throw std::runtime_error{"Not implemented"};
}
size_t CharChanger(char array[], size_t size, char delimiter) {
if (size == 0) return 0;

size_t write_pos = 0;
char prev_char = '\0';
char current_sequence_char = '\0';
size_t count = 0;
bool in_space_sequence = false;

for (size_t read_pos = 0; read_pos < size && array[read_pos] != '\0'; read_pos++) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

префиксный инкремент нужен

char current_char = array[read_pos];

// Обработка пробелов
if (current_char == ' ') {
// Если у нас есть незаписанная последовательность, записываем ее
if (current_sequence_char != '\0') {
array[write_pos++] = current_sequence_char;
if (count > 1) {
if (count >= 10) {
array[write_pos++] = '0';
} else {
array[write_pos++] = '0' + count;
}
}
current_sequence_char = '\0';
count = 0;
}

// Добавляем разделитель для каждой группы пробелов
if (!in_space_sequence) {
array[write_pos++] = delimiter;
in_space_sequence = true;
}
continue;
}

// Не пробел - сбрасываем флаг последовательности пробелов
in_space_sequence = false;

// Преобразование символа
char transformed_char = current_char;

if (std::isdigit(current_char)) {
transformed_char = '*';
} else if (std::isalpha(current_char)) {
transformed_char = std::toupper(current_char);
} else if (current_char != ' ') {
transformed_char = '_';
}

// Обработка последовательностей символов
if (current_char == prev_char) {
count++;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

префиксный инкремент нужен

} else {
// Запись предыдущей последовательности
if (current_sequence_char != '\0') {
array[write_pos++] = current_sequence_char;
if (count > 1) {
if (count >= 10) {
array[write_pos++] = '0';
Copy link
Contributor Author

Choose a reason for hiding this comment

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

это достаточно большая вложенность, обычно от такого можно избавиться

} else {
array[write_pos++] = '0' + count;
}
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

дублирование кода, выше есть точно такой же блок, значит можно было написать оптимальнее, что-то может вынести во вспомогательные функции

// Начало новой последовательности
prev_char = current_char;
current_sequence_char = transformed_char;
count = 1;
}
}

// Запись последней последовательности (если не пробел)
if (current_sequence_char != '\0') {
array[write_pos++] = current_sequence_char;
if (count > 1) {
if (count >= 10) {
array[write_pos++] = '0';
} else {
array[write_pos++] = '0' + count;
}
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

ещё один повтор


// Завершение строки
if (write_pos < size) {
array[write_pos] = '\0';
} else if (size > 0) {
array[size - 1] = '\0';
}

return write_pos;
}
51 changes: 47 additions & 4 deletions 01_week/tasks/check_flags/check_flags.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include <cstdint>
#include <stdexcept>

#include <iostream>
#include <string>
#include <vector>

enum class CheckFlags : uint8_t {
NONE = 0,
Expand All @@ -14,5 +15,47 @@ enum class CheckFlags : uint8_t {
};

void PrintCheckFlags(CheckFlags flags) {
throw std::runtime_error{"Not implemented"};
}
// Проверка того, что значение находится в допустимом диапазоне
uint8_t value = static_cast<uint8_t>(flags);
if (value > static_cast<uint8_t>(CheckFlags::ALL)) {
return; // выход за пределы диапазона - оставляем вывод пустым
Copy link
Contributor Author

Choose a reason for hiding this comment

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

тут по коду понятно, комментарии лишние

}

// Если флаг NONE
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Это прям написано ниже, комментарий лишний)

if (flags == CheckFlags::NONE) {
std::cout << "[]";
return;
}

std::vector<std::string> active_flags;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

не очень оптимальное решение и далее происходят реалокации вектора


// Проверка того, что каждый флаг по порядку
if ((value & static_cast<uint8_t>(CheckFlags::TIME)) != 0) {
active_flags.push_back("TIME");
}
if ((value & static_cast<uint8_t>(CheckFlags::DATE)) != 0) {
active_flags.push_back("DATE");
}
if ((value & static_cast<uint8_t>(CheckFlags::USER)) != 0) {
active_flags.push_back("USER");
}
if ((value & static_cast<uint8_t>(CheckFlags::CERT)) != 0) {
active_flags.push_back("CERT");
}
if ((value & static_cast<uint8_t>(CheckFlags::KEYS)) != 0) {
active_flags.push_back("KEYS");
}
if ((value & static_cast<uint8_t>(CheckFlags::DEST)) != 0) {
active_flags.push_back("DEST");
}

// Вывод
std::cout << "[";
for (size_t i = 0; i < active_flags.size(); ++i) {
if (i > 0) {
std::cout << ",";
}
std::cout << active_flags[i];
}
std::cout << "]";
}
68 changes: 68 additions & 0 deletions 01_week/tasks/length_lit/length_lit.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#include <cmath>

// Константы для перевода
constexpr double CM_IN_METER = 100.0;
constexpr double METERS_IN_FOOT = 0.3048;
constexpr double INCHES_IN_FOOT = 12.0;
constexpr double CM_IN_INCH = 2.54;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

это хорошо


// Метры в футы
constexpr double operator"" _m_to_ft(long double meters) {
return static_cast<long double>(meters / METERS_IN_FOOT);
}

// Метры в дюймы
constexpr double operator"" _m_to_in(long double meters) {
return static_cast<double>(meters * CM_IN_METER / CM_IN_INCH);
}

// Метры в сантиметры
constexpr double operator"" _m_to_cm(long double meters) {
return static_cast<double>(meters * CM_IN_METER);
}

// Сантиметры в метры
constexpr double operator"" _cm_to_m(long double centimeters) {
return static_cast<long double>(centimeters / CM_IN_METER);
}

// Сантиметры в футы
constexpr double operator"" _cm_to_ft(long double centimeters) {
return static_cast<double>(centimeters / CM_IN_METER / METERS_IN_FOOT);
}

// Сантиметры в дюймы
constexpr double operator"" _cm_to_in(long double centimeters) {
return static_cast<double>(centimeters / CM_IN_INCH);
}

// Футы в метры
constexpr double operator"" _ft_to_m(long double feet) {
return static_cast<double>(feet * METERS_IN_FOOT);
}

// Футы в сантиметры
constexpr double operator"" _ft_to_cm(long double feet) {
return static_cast<double>(feet * METERS_IN_FOOT * CM_IN_METER);
}

// Футы в дюймы
constexpr double operator"" _ft_to_in(long double feet) {
return static_cast<double>(feet * INCHES_IN_FOOT);
}


// Дюймы в метры
constexpr double operator"" _in_to_m(long double inches) {
return static_cast<double>(inches * CM_IN_INCH / CM_IN_METER);
}

// Дюймы в сантиметры
constexpr double operator"" _in_to_cm(long double inches) {
return static_cast<double>(inches * CM_IN_INCH);
}

// Дюймы в футы
constexpr double operator"" _in_to_ft(long double inches) {
return static_cast<double>(inches / INCHES_IN_FOOT);
}
43 changes: 38 additions & 5 deletions 01_week/tasks/print_bits/print_bits.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
#include <cstddef>
#include <stdexcept>

#include <iostream>

/*функцию, преобразующая целое число
и размер в байтах и выводит на экран битовое представление числа в формате 0bXXXX'XXXX.*/
void PrintBits(long long value, size_t bytes) {
throw std::runtime_error{"Not implemented"};
}
// Проверка допустимости размера
if (bytes == 0 || bytes > 8) {
return;
}

// Вывод префикс
std::cout << "0b";

// Цикл по всем битам от старшего к младшему
for (int byte = bytes - 1; byte >= 0; --byte) {

// Текущий байт
Copy link
Contributor Author

Choose a reason for hiding this comment

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

это написано в имени переменной ниже

unsigned char current_byte = (value >> (byte * 8)) & 0xFF;

// Вывод битов текущего байта
for (int bit = 7; bit >= 0; --bit) {
// Текущий бит (7-й бит - старший)
unsigned char current_bit = (current_byte >> bit) & 1;
std::cout << (current_bit ? '1' : '0');

// Добавление апострофа после 4-го бита в каждом байте
if (bit == 4) {
std::cout << "'";
}
}

// Добавление апострофа между байтами (кроме последнего)
if (byte > 0) {
std::cout << "'";
}
}

// Завершение вывода
std::cout << "\n";
}
Loading
Loading