45 lines
2.1 KiB
C
45 lines
2.1 KiB
C
#ifndef POLY_CALC_H
|
||
#define POLY_CALC_H
|
||
|
||
// Структура для представления слагаемого
|
||
typedef struct {
|
||
int coefficient; // коэффициент
|
||
int exponent; // степень переменной
|
||
} Term;
|
||
|
||
// Структура для представления полинома
|
||
typedef struct {
|
||
Term *terms; // массив слагаемых
|
||
int size; // количество слагаемых
|
||
int capacity; // вместимость массива
|
||
} Polynomial;
|
||
|
||
// Инициализация полинома
|
||
void init_polynomial(Polynomial *p);
|
||
// Добавление слагаемого в полином
|
||
void add_term(Polynomial *p, int coeff, int exp);
|
||
// Сортировка слагаемых в полиноме по убыванию степени
|
||
void sort_polynomial(Polynomial *p);
|
||
// Освобождение памяти, занятой полиномом
|
||
void free_polynomial(Polynomial *p);
|
||
// Копирование полинома
|
||
// Polynomial copy_poly(Polynomial *p);
|
||
// Печать полинома
|
||
void print_polynomial(Polynomial *p);
|
||
// Возвращает копию полинома
|
||
Polynomial copy_poly(Polynomial *p);
|
||
// Например есть полином x+1 и терм (2,1)=2x, значит в полиноме есть
|
||
// incremental (увеличиваемое), т.е. есть к чему прибавить 2x
|
||
Term* exist_incremental(Polynomial *p, Term term);
|
||
// Сложение одного слагаемого и полинома (вспомогательная функция)
|
||
void add_term_and_poly(Polynomial *p, Term term);
|
||
// Вернет сумму двух полиномов
|
||
Polynomial add_polynomials(Polynomial *p1, Polynomial *p2);
|
||
// Вычтет p2 из p1 и вернет разность
|
||
Polynomial sub_polynomials(Polynomial *p1, Polynomial *p2);
|
||
// Перемножит полиномы, вернет результат
|
||
Polynomial mul_polynomials(Polynomial *p1, Polynomial *p2);
|
||
// Возведение полинома в целую степень
|
||
Polynomial deg_poly(Polynomial *p1, int degree);
|
||
|
||
#endif |