Skip to content

borisiryshkov/labs_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Инструкция к программе

Обзор

В течение семестра была разработана программа на C++, выполняющая множество математических и алгоритмических функций, включая:

  • Вычисление сложных алгебраических выражений
  • Работу с массивами с использованием STL vector
  • Табулирование функций с разными типами циклов
  • Сохранение результатов работы в файлы форматов .txt и .csv
  • Игровые алгоритмы для развития навыков программирования

1. Начало работы

Главное меню

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

Доступные функции

Название Описание
1 Лабораторная работа №1 Вычисление сложного алгебраического выражения с тригонометрическими функциями
2 Лабораторная работа №2 Меню выбора задания с условными операторами и switch-case
3 Лабораторная работа №3 Табулирование функции с использованием разных типов циклов
4 Лабораторная работа №4 Генерация и обработка одномерного массива
5 Лабораторная работа №5 Работа с двумерным массивом и матричными операциями
6 Лабораторная работа №6 Вычисление ряда с заданной точностью эпсилон
7 Игра "Угадай количество вагонов" Логическая игра с определением количества вагонов
8 Вывод простых чисел Генерация простых чисел до заданного предела

2. Выполнение функций

Лабораторная работа №1

Вычисление выражения: y = sqrt(a/(1 + b*x²)) + b*ctg(x) + exp(c*x)

Ввод значения X

Программа вычисляет сложное математическое выражение с параметрами:

  • a = 4.5, b = 2.2, c = -1.5
  • Ввод пользователем значения X
  • Защита от некорректного ввода
  • Сохранение результата в текстовый файл

Защита от некорректного ввода

Лабораторная работа №2

Состоит из трех заданий:

Задание 1: Условное вычисление

if (x >= 2) y = log(a + x²);
else y = exp(sin(x)) + 2*b;

Задание 2: Многоступенчатое условие

if (x <= -2) y = log(|x| + sqrt(a*x² + 1));
else if (x > 5) y = atan(b/(x² + 1));
else y = sqrt(a² + x²);

Задание 3: Оператор switch для конкретных значений X

Меню выбора задания

Лабораторная работа №3

Табулирование функции: y = sqrt((a*x)/(b + cos²(x)))

Три варианта реализации:

  • Цикл while - с предусловием
  • Цикл do...while - с постусловием
  • Цикл for - с параметром

Пользователь задает:

  • Начальное значение X0
  • Конечное значение Xk
  • Шаг D

Работа с CSV

Лабораторная работа №4

Работа с одномерным массивом:

  • Генерация массива случайных чисел (0-6)
  • Использование STL vector
  • Вывод элементов до первого нуля
  • Динамическое определение размера массива

Одномерный массив

Лабораторная работа №5

Работа с двумерным массивом:

  • Создание матрицы размером L×W
  • Вычисление суммы всех элементов
  • Замена элементов на главной диагонали и под ней на единицы
  • Вычисление произведения элементов модифицированной матрицы

Двумерный массив

Лабораторная работа №6

Вычисление ряда Фурье:

F = 1/(2a) - Σ[(-1)ⁱ⁻¹ * (a*cos(i*x)/(a² - i²))]
  • Вычисление с заданной точностью ε
  • Подсчет количества итераций
  • Использование математических функций

Алгебраическое выражение

Игра "Угадай количество вагонов"

Логическая игра с особенностями:

  • Вагоны соединены по циклу (первый и последний соединены)
  • Случайное начальное состояние лампочек в каждом вагоне
  • Задача: определить общее количество вагонов
  • Возможность переключения состояния лампочек

Игровой процесс

Алгоритм "Вывод простых чисел"

Генерация простых чисел:

  • Ввод верхней границы поиска
  • Эффективный алгоритм определения простых чисел
  • Вывод всех найденных значений

Генерация простых чисел

3. Технические особенности

Защита от некорректного ввода

while (isdigit(static_cast<int>(x)) || (cin.peek() != '\n')) {
    cin.clear();
    while (cin.get() != '\n');
    cout << "Введите численное значение: ";
    cin >> x;
}

Работа с файлами

  • lab_all.txt - текстовый формат с локализацией для десятичных разделителей
  • lab_all.csv - табличный формат для данных табулирования

Используемые технологии

  • STL vector для работы с массивами
  • Математические функции (sqrt, log, exp, trig functions)
  • Локализация вывода чисел
  • Очистка экрана (system("cls"))

4. Завершение работы

В любой момент пользователь может завершить работу программы, введя 0 в главном меню:

Завершение программы

Результаты работы: после закрытия программы в файлах lab_all.txt и lab_all.csv сохраняются все результаты выполнения алгоритмов.

About

Old C++ labs from bachelor's first year - written in spring 2019

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages