Этот проект содержит набор программ на языке C, демонстрирующих базовые алгоритмы. Все задачи выполнены в рамках домашнего задания №2 курса «Практикум на ЭВМ 2025/2026».
task2/ 2.1.c # Квадратный корень методом Ньютона 2.2.1.c # Вычисление значения многочлена (метод Горнера) 2.2.2.c # Вычисление многочлена и его производной 2.3.c # Итеративное и рекурсивное вычисление чисел Фибоначчи 2.4.c # Разбор вещественной константы (собственная str2double) 2.5.c # Список слов (удаление повторов последнего слова) 2.6.c # Дерево поиска (BST) 2.7.c # Калькулятор (рекурсивный спуск с +, -, *, /, ^ и скобками)
README.md
Компиляция всех программ через gcc:
'''
gcc 2.1.c gcc 2.2.1.c gcc 2.2.2.c gcc 2.3.c gcc 2.4.c gcc 2.5.c gcc 2.6.c gcc 2.7.c Описание задач и функций 2.1.c — Метод Ньютона для квадратного корня Функция: double calculation_sqrt(double x, double eps); Описание: Вычисляет √x с заданной точностью eps методом Ньютона. Ввод: eps, затем последовательность чисел x. Вывод: приближённые значения √x.
2.2.1.c — Вычисление многочлена (метод Горнера)
Описание: Вычисляет значение многочлена степени n-1 в точке x методом Горнера. Ввод: x, затем коэффициенты. Вывод: значение многочлена.
2.2.2.c — Многочлен и его производная
Описание:
double polynom — значение многочлена; double derivative — значение производной. Вывод: первая строка — значение многочлена, вторая — производной.
2.3.c — Числа Фибоначчи Функции: int fib_iter(int n); int fib_rec(int n); Описание:
Итеративное (fib_iter) и рекурсивное (fib_rec) вычисление n-го числа Фибоначчи. Ввод: последовательность целых чисел n. Вывод: для каждого n оба результата.
2.4.c — Собственная функция str2double Функция: double str2double(char str[]); Описание: Преобразует строку в double без использования math.h и strtod. Поддержка: знак, дробная часть, экспонента. Обработка ошибок: некорректные форматы → сообщение в stderr.
2.5.c — Список слов Структуры: typedef struct Node { char *word; struct Node *next; } Node; Описание:
Создание, добавление, печать, удаление повторов последнего слова. Вывод: слова через пробел после удаления повторов.
2.6.c — Дерево поиска (BST) Структура: typedef struct Node { unsigned int key; struct Node *left; struct Node *right; } Node; Функции: insert, find, removeNode, destruct. Описание:
Поддержка команд +x, -x, ?x из stdin.
?x выводит yes/no.
2.7.c — Калькулятор на рекурсивном спуске Операции: +, -, *, /, ^, скобки. Описание:
expr — сложение и вычитание (левоассоциативно)
add — умножение и деление (левоассоциативно)
mult — возведение в степень (правоассоциативно)
atom — цифра или скобки Особенности:
Проверка ошибок: деление на ноль, отрицательная степень
Принципы реализации Рекурсивные и итеративные алгоритмы
Обработка ошибок с возвратом в начало диалога (longjmp)
Автор Алексей Щербаков