University homework: algorithms in Rust
Find a file
2025-12-18 10:22:14 +03:00
src Initial commit: решения 29 задач по алгоритмам на Rust 2025-12-18 10:22:14 +03:00
.gitignore Initial commit: решения 29 задач по алгоритмам на Rust 2025-12-18 10:22:14 +03:00
Cargo.toml Initial commit: решения 29 задач по алгоритмам на Rust 2025-12-18 10:22:14 +03:00
README.md Initial commit: решения 29 задач по алгоритмам на Rust 2025-12-18 10:22:14 +03:00

Programming Homework - Algorithms in Rust

Описание проекта

Проект содержит решения 29 задач по трем категориям алгоритмов:

  1. Линейные алгоритмы (10 задач)
  2. Разветвляющиеся алгоритмы (10 задач)
  3. Циклические алгоритмы (9 задач)

Проект предназначен для обучения и тренировкам по алгоритмизации и программированию на языке Rust. Каждая задача демонстрирует различные аспекты алгоритмов: от базовых вычислений до сложных циклических конструкций.

Структура проекта

programming_homework_simply/
├── src/
│   ├── warmup/          # Модуль с задачами
│   │   ├── mod.rs       # Экспорт модулей
│   │   ├── linear.rs    # Линейные алгоритмы (задачи 1-10)
│   │   ├── branching.rs # Разветвляющиеся алгоритмы (задачи 1-10)
│   │   └── cyclic.rs    # Циклические алгоритмы (задачи 1-9)
│   └── main.rs          # Основной файл с меню
├── Cargo.toml           # Конфигурация проекта
├── Cargo.lock           # Версии зависимостей
├── README.md            # Этот файл
└── .gitignore           # Игнорируемые файлы

📋 Список задач

Линейные алгоритмы (10 задач)

  1. Арифметическая прогрессия - вычисление разности, N-ного члена и суммы
  2. Сумма членов арифметической прогрессии - по известным членам найти сумму диапазона
  3. Геометрическая прогрессия - вычисление суммы членов в диапазоне
  4. Перевод температуры - конвертация Фаренгейтов в Цельсии (451°F)
  5. Процент троек в классе - статистика оценок
  6. Вычисление выражения - 100³ - 92² + k
  7. Тригонометрическое выражение - √((1 - cos(x))/2)
  8. Медиана треугольника - по трем сторонам
  9. Биссектриса треугольника - вычисление по формуле
  10. Высота треугольника - по трем сторонам

Разветвляющиеся алгоритмы (10 задач)

  1. Кратность числа - проверка делимости на 3
  2. Вычисление z - по формуле с min/max
  3. Условное вычисление - выбор между max/min
  4. Кусочно-заданная функция - f(x) с тремя интервалами
  5. Тригонометрическая функция - с параметрами a и b
  6. Функция по графику - треугольный импульс
  7. Координатная четверть - определение положения точки
  8. Расстояние до полукруга - геометрическая задача
  9. Проверка полуплоскости - верхняя/нижняя
  10. Проверка четности - двух чисел

Циклические алгоритмы (9 задач)

  1. Количество цифр - подсчет цифр в числе
  2. Сумма цифр - вычисление суммы цифр
  3. Поиск цифры 3 - проверка наличия цифры 3
  4. Перевернуть число - обратный порядок цифр
  5. Перевернуть число (вариант 2) - альтернативная реализация
  6. Поменять цифры - первая и последняя
  7. Подсчет нулей - сколько нулей в числе
  8. Сравнение суммы квадратов - с самим числом
  9. Наибольшее число - из последовательности

🚀 Установка и запуск

Предварительные требования

  • Установленный Rust (версия 1.70 или выше)
  • Git для клонирования репозитория

1.1. Установите Git

1.2. Установите Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env


### Команды для запуска
```bash
# Клонирование репозитория
git clone https://github.com/iva0will/programming_homework_simply.git
cd programming_homework_simply

# Сборка проекта
cargo build

# Запуск программы
cargo run

# Запуск в режиме релиза (оптимизированная версия)
cargo run --release

# Проверка компиляции без сборки
cargo check

📖 Использование программы

При запуске программы отображается интерактивное меню:

=== ПРОГРАММИРОВАНИЕ: ВЫПОЛНЕНИЕ ЗАДАНИЙ ===
Выберите категорию заданий:
1. Линейные алгоритмы
2. Разветвляющиеся алгоритмы
3. Циклические алгоритмы
0. Выход

Введите номер категории (0-3):

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

📚 Генерация документации

Проект содержит подробные документационные комментарии (doc comments), которые можно просмотреть:

# Сгенерировать и открыть документацию
cargo doc --open

# Сгенерировать документацию только для вашего кода
cargo doc --no-deps --open

# Документация будет доступна в target/doc/

Документация включает:

  • Описание каждой функции
  • Примеры использования
  • Математические формулы
  • Особые случаи

🎯 Цели обучения

  1. Освоение базового синтаксиса Rust - переменные, типы данных, функции
  2. Работа с пользовательским вводом/выводом - чтение и обработка данных
  3. Реализация математических алгоритмов - прогрессии, геометрические вычисления
  4. Управляющие конструкции - условные операторы, циклы
  5. Модульная организация кода - разделение на модули
  6. Документирование кода - использование rustdoc
  7. Работа с системой сборки Cargo - управление зависимостями

🔧 Дополнительные команды

# Форматирование кода (стандартный стиль Rust)
cargo fmt

# Статический анализ кода
cargo clippy

# Запуск тестов (если добавлены)
cargo test

# Очистка сборочных файлов
cargo clean

# Создание нового проекта
cargo new название_проекта

📊 Пример работы программы

=== ПРОГРАММИРОВАНИЕ: ВЫПОЛНЕНИЕ ЗАДАНИЙ ===
Выберите категорию заданий:
1. Линейные алгоритмы
2. Разветвляющиеся алгоритмы
3. Циклические алгоритмы
0. Выход

Введите номер категории (0-3): 1

=== ЛИНЕЙНЫЕ АЛГОРИТМЫ ===
Доступные задачи: 1-10
Введите номер задачи или 0 для возврата: 1

Задача 1: Арифметическая прогрессия
Известны первый и пятый члены прогрессии
Найти величину члена прогрессии с номером N и сумму членов

Введите первый член прогрессии (a1): 2
Введите пятый член прогрессии (a5): 10
Введите номер N: 10

Результат:
  Разность прогрессии d = 2.0000
  Члены прогрессии a10 = 20.0000
  Сумма первых 10 членов S10 = 110.0000

📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.


Примечание: Этот проект является учебной работой и предназначен для демонстрации навыков программирования на Rust. Все задачи реализованы с акцентом на читаемость кода и детальное документирование.